2016-11-30 16 views
0

私はAJAXコードから呼び出されるforeachループを持っています。 foreachループがすぐにスキップされているようです。私は最終的にforeachループが配列の各値を使ってクエリを実行するようにしたいと思いますが、最初にforeachループの動作をテストしようとしています(それはしません)。私が受け取っているアラート(私のAJAXから)は、オリジナルの配列であり、追加されたアイテムのものではありません。AJAX呼び出しでforeachループを使用するには?

PHP:

$data = array(); 
    if(isset($_POST['myArray']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']){ 
    $data = $_POST['myArray']; 
    foreach ($data as $item) { 
     $data[] = $item; 
    } 
    echo json_encode($data); 
    die();  
} 

AJAX:ラインvar arr = kegs;として

$(document).ready(function(){ 
    $('#btn-addkegs').click(function() { 
     var arr = kegs; 
     var myArray = JSON.stringify(arr); 

     $.ajax({ 
      url: "addkegs.php", 
      method: "POST", 
      dataType: "json", 
      data: {myArray: myArray}, 
      success: function (result) { 
      alert("Your kegs have been added! These include: " + result); 
      textarea.value = ""; 
      kegs = []; 
     } 
        }); 

      }); 
     }); 

、アレイ '樽' の値は、入力フィールドを介して設定され、他のAJAXが、すべてそれが動作しています良い。私の問題は私のPHPコードにあると思います。

+0

ループが反復する同じ変数を変更しようとしているようです。実行時の '$ data'の実際の値は何ですか? – David

+0

@David私がテストしたユーザ入力に基づいて、$ data = ["1"、 "2"、 "3"]と受け取ったアラートは同じ値["1"、 "2" 3 "]。 – jh95

+0

AJAXの応答後にアラートの値が表示される場合は、実際の問題は何ですか? – David

答えて

0

投稿で値を送信する場合は、コメントのように:1,2,3 あなたの$ _POST ['myArray]]にあなたが送ったものがリテラルに受信されました。

ので、データ変数はこのように思える配列受け取ることになります[「1」、「2」、「3」]

うーん...あなたは配列として変数$データを作成していないので、はい、内部に配列を置くだけです。

PHPは、$ data []変数を$ dataと同じとみなしません。

したがって、PHPは同じ値からの値を上書きしていました。

だから、私はあなたが同じ配列の中の値を繰り返したい場合、あなたはこの配列を返すとき

$data = $_POST['myArray']; 
foreach ($data as $item) { 
    array_push($data, $item); 
} 

今array_pushで配列を参照しなければならないと思いますが、あなたは{1のような応答を持っています@デビッドによってコメントから、2,3,1,2,3}

+0

あなたの関数では新しい値を入れていないことを覚えておいてください。あなたはポストから値を取得していて、この値を同じ名前の「新しい配列」に入れていました。 –

+0

このコードを使用すると、同じ結果が得られ、["1"、 "2"、 "3"]の警告が表示されます – jh95

+0

コードにエラーがあります: 空の関数が閉じられていません。 ($ _ POST ['myArray'])&&!empty($ _ SERVER ['HTTP_X_REQUESTED_WITH']){ あなたのコードが正しいかどうかを確認してください。空のサーバがなくてもテストしてください... –

0

回答:

In your browser's debugging tools, take a look at the network requests. Examine the AJAX request and its response. If the result is entirely wrapped in quotes, then it's just a string and not an array. You may need to JSON-decode $_POST['myArray'] server-side to interpret it as an array.

私は$data = json_decode($_POST['myArr']);$data = $_POST['myArr'];を変更する必要がありました。

関連する問題