2017-03-14 4 views
0

I Ajax呼び出し作っています:最初Ajaxのcall paramからPHPの配列にアクセスするには?

$.ajax({ 
     url: "create_card.php", 
     type: "GET", 
     data: {deck: selection, data: $(input_form).serialize()} 
    }); 

を、私はちょうど呼び出しで配列を使用していたので、私はdata: $(input_form).serialize()を持っていた、と私は入力フォームからデータを取得するには、このコードを使用していた(card_infoされます入力フォームの名前付きデータ)の配列:

for($x = 0; $x < $array_length; $x++) { 
     if(isset($_GET[$card_info[$x]])){ 
      $arg = $_GET[$card_info[$x]]; 
      $sql_query .= "\"" . $arg . "\""; 
      if($x != $array_length - 1) { 
       $sql_query .= ", "; 
      } else { 
       $sql_query .= ")"; 
      } 
     } 
    } 

しかし、今、私はAjaxの呼び出しに余分なパラメータを追加したことは、私はもう同じ方法でデータにアクセスするように見えることはできません。私は$_GET[data[$card_info[$x]]]を試しましたが、これは動作しませんでした。

+0

data:$(input_form).serialize()+ '&deck = "selection" – splash58

答えて

1

$(input_form).serialize()

data: {deck: selection, data: $(input_form).serialize()} 

を使用して

を、stringにフォームからデータをシリアライズちょっと inputName1=inputValue1&inputName2=inputValue2&inputName3=inputValue3となど、あなたのサーバーへの2つのプロパティdeckdataを持つオブジェクトを送信することを意味します。サーバー上でこのオブジェクトはdeckdataという2つのキーを持つ$_GETの配列に変換されます。 $_GET['data']は、以前にシリアル化された値を持つstringを保持します。

print_r($_GET)を使用すると、私が話していることが分かります。

したがって、データを送信する方法を混在させることはできません。 @ splash58が提案されたようにどちらかあなたは、文字列を送信します。

// here you have a string 
data: $(input_form).serialize() + '&deck=' + selection 

またはオブジェクト:

// here you have an object 
data: {deck: selection, field1: $("#someId").val(), field2: $("#yaId").val(), /* etc */ } 

どこfield1field2$("#yaId").val()は、いくつかの値を取得するために使用されている方法であるキーと$("#someId").val()、(ですこの場合はIDを使用します)。

+0

同じように言ってきました。私はフィドルを設定しました:https://jsfiddle.net/84kfnn1c/。 devツールのネットワークパネルをチェックアウトすると、デバッグに役立つパラメータがどのように送られてくるのかが分かります。あなたは、オブジェクトの配列を提供するフォームのためにserializeArrayを見ることができます:https://api.jquery.com/serializeArray/。このプラグインのようなものを追加したいので、PHPで作業しやすい形式でオブジェクトを取得することができます:http://stackoverflow.com/questions/8900587/jquery-serializeobject-is-not-a-function-ファイアウォールでのみ。どちらの場合でも、送信するものにデッキデータを追加することができます。 – Pango

関連する問題