2016-04-12 12 views
2

私は現在、フォームからシリアル化されたデータに追加データ(特に配列)を追加し、後でPHP経由でアクセスする適切な方法を探しています。私はたくさん試しましたが、実際には何もできませんでした。例えばjQuery:ajax経由でシリアル化されたフォームデータに配列を追加し、PHPでアクセスしますか?

HTML:

<form id='addUserForm'> 
     <input type='text' name='firstname'> 
    </form> 

JS/jQueryの:

var testArr = { 
    one: "1", 
    two: "2", 
    three: 3 
}; 


var ser = $("#addUserForm").serializeArray(); 

ser.push({ newArr:testArr}); 

console.log(ser); 

$.ajax({ 
    type: "POST", 
    url: url, 
    data: ser, 
}); 

IはserializeArray()を使用し、serializedArrayに新しい配列を押し込みます。 私はconsole.log - >それは正常に動作します。しかし、私は次のようにPHPでそれにアクセスしようとしているとき:

var_dump($_POST); 

私が手:

array(2) { 
    ["firstname"]=> 
    string(6) "123123" 
    ["undefined"]=> 
    string(0) "" 
} 

それはそれはJSではconsole.logを経由して、プッシュだったにも関わらず、「未定義」であると述べています成功した。

また、私はJSON.stringify(ser)data: {ser:ser} - > JSON文字列に変換しようとしましたが、それにはアクセスするのが面倒です。

$_POST[0]['value']の代わりに、$_POST['firstname']$_POST['testarr']でPHPにアクセスしたいとします。

私はそれが理に適ったと思います。とても短い話です:シリアル化された文字列に追加のデータ/配列を追加し、後でPHPで正しくアクセスするにはどうすればいいですか?

+0

$( "#addUserForm")には何が含まれていますか? –

+0

私の投稿を編集しました。 –

答えて

1

これで試してみてください。置換:これで

ser.push({ newArr:testArr}); 

を:

for (var prop in testArr) { 
    ser.push({name: prop, value: testArr[prop]}); 
} 

は、私たちがここでやっていることは、オブジェクトの配列を作成して、それぞれの名前と値のプロパティを含みます。

関連する問題