0 レビュー
0 回答
javascript-入力配列をJSONとして使用してフォームをシリアル化し、PHPで配列として使用します
HTMLフォーム(入力配列を含む)をserializeArrayして、AJAX経由でJSONとして送信したいと思います。次に、それを配列として使用します。
私が持っているもの
以下の関数を使用してフォームをシリアル化します。
// A function to serialize an html form to JSON
$.fn.serializeFormJson = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if ( ! o[this.name].push) o[this.name] = [o[this.name]];
o[this.name].push(this.value || '');
} else o[this.name] = this.value || '';
});
return o;
};
serializeArray
と比較した場合のこの関数の良い点name
属性を持つ入力値の配列を作成することです。そのようです:
<input type="text" name="PersonName" value="FirstName" /> <input type="text" name="PersonName" value="SecondName" />
上記のHTMLは、シリアル化およびJSON化すると、次のようになります。
{
"PersonName": [
"FirstName",
"SecondName"
]
}
$_POST
をdeJSONして使用した後、PHPでデータを使用できます。
ここまではすべてうまくいきます。
必要なもの
HTMLでは、入力name
を[]
指定して、反対側の配列を取得できます(JSONやAJAXではなく単純なフォーム送信)。お気に入り:
<form id="myForm" method="POST" action="13.php"> <input type="text" name="PersonName[FirstOne]" value="FirstName" /> <input type="text" name="PersonName[SecondOne]" value="SecondName" /> <input type="text" name="PersonName[ThirdOne]" value="ThirdName" /> </form>
var_dump($_POST)
結果はPHPになります。
array (size=1)
'PersonName' =>
array (size=3)
'FirstOne' => string 'FirstName' (length=9)
'SecondOne' => string 'SecondName' (length=10)
'ThirdOne' => string 'ThirdName' (length=9)
問題
上記は、JSONやAJAXではなく、単純なフォーム送信に関するものでした。フォームをJSONとしてシリアル化し、AJAX経由で送信する場合、PHPはデータを上記のように配列に変換しません。 deJSONingの後var_dump
は次のようになります。
array (size=3)
'PersonName[FirstOne]' => string 'FirstName' (length=9)
'PersonName[SecondOne]' => string 'SecondName' (length=10)
'PersonName[ThirdOne]' => string 'ThirdName' (length=9)
配列にしたいと思います。最初のもののように。
注:[]
を持つものを変換して配列に変換する関数を作成することはできますが、それほど効率的ではありません。
注:私の質問のケースは一例です。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。