我得到了这些关键价值对,但是如何使用PHP访问它们?
我以为我需要这样做,但它行不通:
// in PHP script
$data = json_decode($_POST['data'], true);
var_dump($data);// will return NULL?
thanks,理查德
建议,您可能不会处理
json_decode
.的返回值。 尝试
$data = json_decode($_POST['data'], true);
var_dump($data);
$data
查看Ajax调用的内容发布了您脚本的内容。可能是您试图从错误的键访问JSON。
eDit
用于序列化状态的jQuery文档.serializearray()方法创建了一个对象的JavaScript
array
,即将编码为JSON字符串。显然,jQuery中没有object2json函数,因此要么使用
https://github.com/douglascrockford/json-js/blob/master/master/json2.js用作第三方lib或使用Http://api.jquery .com/serialize/
代替
实际上,OP可以通过进行以下更改来使用serializearray(),而不是仅仅使用serialize():
var_dump($_POST);
通过使用序列化数组和JSON_DECODE()
//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
值接收到一个阵列
可以使用$ value [0] ['value']检索每个html组件名称为$ [0] ['name']
// js
var dats = JSON.stringify($(this).serializeArray());
data: { values : dats } // ajax call
//PHP
$value = (json_decode(stripslashes($_REQUEST['values']), true));
返回的JSON结构不是字符串。您必须使用插件或第三方库来“ Stringify”它。有关更多信息,请参阅此信息:
JavaScript不会改变值发布的方式吗? 您是否应该能够像往常一样通过php访问该值
Edit:您始终可以转储$ _ post的内容,以查看使用JavaScript表单提交的内容,使用
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] => [email protected] ) [3] => Array ( [name] => phone [value] => 048028 ) [4] => Array ( [name] => titles [value] => Enquiry ) [5] => Array ( [name] => text [value] => test ) )
。 这将使您了解您需要在PHP中访问您需要的数据需要做什么。
我的情况与此相似,我相信ty w有正确的答案。我将包含一个代码的示例,以防万一有足够的差异可以更改结果,但是似乎您可以像往常一样在PHP中使用发布的值。
$_POST['name_of_input_goes_here']
print_r($_POST)
您可以在PHP中使用此功能来逆转serializearray()。
// Javascript
$('#form-name').submit(function(evt){
var data = $(this).serializeArray();
$.ajax({ ...etc...
// PHP
echo $_POST['fieldName'];
也许它将帮助那些正在寻找的人:)
您以这样的方式发送数据:
json_decode()
然后在服务器端使用Parse_str(
<?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;
}
?>
变量
$.ajax({
url: 'url_name',
data: {
form_data: $('#form').serialize(),
},
dataType: 'json',
method: 'POST'
})
console.log($('#form').serialize()) //'f_ctrType=5&f_status=2&f_createdAt=2022/02/24&f_participants=1700'
将包含以下内容:
$_POST['form_data'], $res
@Adriano de abreu Wanderley的解决方案可以使用dine的字段名称处理,而没有钥匙。