どの値からserializeArray PHP?
-
19-09-2019 - |
質問
今はこの新しい方法などの見 serializeArray()
.
//with ajax
var data = $("#form :input").serializeArray();
post_var = {'action': 'process', 'data': data };
$.ajax({.....etc
いこれらのキーと値のペアが、どんなアクセスしてPHP?
が必要だと思いることがで動作しません:
// in PHP script
$data = json_decode($_POST['data'], true);
var_dump($data);// will return NULL?
り、Ofixのリチャード
解決
のように入れ、おとなっていない可能性が処理の戻り値 json_decode.
試
$data = json_decode($_POST['data'], true);
var_dump($data);
の場合 $data
に含まれていない予定データ、その var_dump($_POST);
どのAjax通ったポストを記述します。なおアクセスしようとしているのJSONからは違います。
編集
実際にすることができるようになりだんに送JSONの宮元啓介(士道館荻野道場)
のjQuery docsのためのserialize状態 きます。serializeArray()メソッドを作成しJavaScript 配列 オブジェクト を符号化すること としてJSON文字列になります。 を符号化することはなJSON.そうではありませんObject2JSON機能をマウスでクリックしているとそうではない使用 https://github.com/douglascrockford/JSON-js/blob/master/json2.js として、第3者lib用 http://api.jquery.com/serialize/ です。
他のヒント
返されるJSON構造は、文字列ではありません。あなたはそれを「文字列化」するプラグインやサードパーティのライブラリを使用する必要があります。詳細はこれを参照してください。
http://www.tutorialspoint.com/jquery/ajax-serializearray.htm の
OPが実際にはまだ次の変更を行うことによって)だけ(シリアライズの代わりに)serializeArrayを(使用している可能性があります:
//JS
var data = $("#form :input").serializeArray();
data = JSON.stringify(data);
post_var = {'action': 'process', 'data': data };
$.ajax({.....etc
// PHP
$data = json_decode(stripslashes($_POST['data']),true);
print_r($data); // this will print out the post data as an associative array
その可能シリアライズアレイとjson_decode()を使用して
// js
var dats = JSON.stringify($(this).serializeArray());
data: { values : dats } // ajax call
//PHP
$value = (json_decode(stripslashes($_REQUEST['values']), true));
の値は、配列として受信される
各値は$値を使用して取得することができる[0] [ '値']各HTMLコンポーネント名は$値として与えられる[0] [ '名前']
print_r($value) //gives the following result
Array ( [0] => Array ( [name] => name [value] => Test ) [1] => Array ( [name] => exhibitor_id [value] => 36 ) [2] => Array ( [name] => email [value] => test@gmail.com ) [3] => Array ( [name] => phone [value] => 048028 ) [4] => Array ( [name] => titles [value] => Enquiry ) [5] => Array ( [name] => text [value] => test ) )
私はこれに非常に似たような状況があると私はTyのWは、正しい答えを持っていると信じています。私は念のためにそこに結果を変更するのに十分な違いがありますが、あなただけの投稿の値を使用することができているかのようにそれはそう、私のコードの例が含まれます通常どおり、PHPでます。
// Javascript
$('#form-name').submit(function(evt){
var data = $(this).serializeArray();
$.ajax({ ...etc...
// PHP
echo $_POST['fieldName'];
これは本当に簡単な例ですが、私は重要なポイントは、あなたがそれはおそらく、不要な出力を生成してjson_decode()
メソッドを使用しないということだと思います。
Javascriptをそれをしない値がポストを取得する方法を変更しないのですか?あなたは$_POST['name_of_input_goes_here']
ていつものようにPHPを経由して値にアクセスできないようにする必要があります。
編集:あなたは常にあなたがprint_r($_POST)
を使用してjavascriptのフォーム送信から受信しているかを確認するために$ _POSTの内容をダンプできます。それはあなたがあなたが必要とするデータにアクセスするためのPHPで行う必要があると思いますかについていくつかのアイデアを与えるだろう。
あなたはserializeArray()を逆にするPHPでこの機能を使用することができます。
<?php
function serializeToArray($data){
foreach ($data as $d) {
if( substr($d["name"], -1) == "]" ){
$d["name"] = explode("[", str_replace("]", "", $d["name"]));
switch (sizeof($d["name"])) {
case 2:
$a[$d["name"][0]][$d["name"][1]] = $d["value"];
break;
case 3:
$a[$d["name"][0]][$d["name"][1]][$d["name"][2]] = $d["value"];
break;
case 4:
$a[$d["name"][0]][$d["name"][1]][$d["name"][2]][$d["name"][3]] = $d["value"];
break;
}
}else{
$a[$d["name"]] = $d["value"];
} // if
} // foreach
return $a;
}
?>