Ric*_*ard 5 php jquery parsing json serializearray
我正在尝试这种我见过的新方法serializeArray().
//with ajax
var data = $("#form :input").serializeArray();
post_var = {'action': 'process', 'data': data };
$.ajax({.....etc
Run Code Online (Sandbox Code Playgroud)
所以我得到了这些键值对,但是我如何使用PHP访问它们?
我以为我需要这样做,但它不会起作用:
// in PHP script
$data = json_decode($_POST['data'], true);
var_dump($data);// will return NULL?
Run Code Online (Sandbox Code Playgroud)
谢谢,理查德
像Gumbo建议的那样,您可能无法处理json_decode的返回值.
尝试
$data = json_decode($_POST['data'], true);
var_dump($data);
Run Code Online (Sandbox Code Playgroud)
如果$data不包含预期的数据,那么var_dump($_POST);要查看Ajax调用发布到您的脚本的内容.您可能正在尝试从错误的密钥访问JSON.
编辑
实际上,你应该确保你真的首先发送JSON :)
用于序列化状态的 jQuery文档.serializeArray()方法创建一个JavaScript 对象数组,准备编码为JSON字符串.准备编码不是JSON.显然,jQuery中没有Object2JSON函数,所以要么使用https://github.com/douglascrockford/JSON-js/blob/master/json2.js作为第三方库,要么使用http://api.jquery.com/序列化/而不是.
小智 6
通过进行以下更改,OP 实际上仍然可以使用 serializeArray() 而不是仅使用 serialize():
//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
Run Code Online (Sandbox Code Playgroud)
小智 5
它可以通过使用序列化数组和 json_decode()
// js
var dats = JSON.stringify($(this).serializeArray());
data: { values : dats } // ajax call
//PHP
$value = (json_decode(stripslashes($_REQUEST['values']), true));
Run Code Online (Sandbox Code Playgroud)
值作为数组接收
每个值都可以使用 $value[0]['value'] 检索每个 html 组件名称作为 $value[0]['name']
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 ) )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42090 次 |
| 最近记录: |