Javascript js中的数据在php中序列化了什么格式
在我的php中,我获取数据并检查数据是否与数组相似Javascript js中的数据在php中序列化了什么格式,javascript,php,arrays,ajax,Javascript,Php,Arrays,Ajax,在我的php中,我获取数据并检查数据是否与数组相似 var data = $('#demoform').serialize(); var action = $('#demoform').attr('data-action'); console.log(data) $.ajax({ type: 'POST', url: '../include/demo.php', dataType: "json", data: { data: data, action: actio
var data = $('#demoform').serialize();
var action = $('#demoform').attr('data-action');
console.log(data)
$.ajax({
type: 'POST',
url: '../include/demo.php',
dataType: "json",
data: {
data: data,
action: action
},
success: function(data) {
}
}).done(function(data) {
});
我无法发送,当我使用print_r()时代码>我可以
task_date=11%2F30%2F2017+8%3A14+PM&task=qwe&task_person=qwe&task_status=0
但我总是在else部分结束,这意味着数据不是数组
如果不是数组,数据的格式是什么?您提供的数据不是数组。它是一个键值对,可以像$data['task']='qwe'一样访问。您提供的数据不是数组。它是一个键值对,可以像$data['task']='qwe'那样访问,您需要对接收到的数据使用urldecode()
这可能是你感兴趣的-
$data = $_POST['data'];
if (is_array($data)) {
}else{
}
导致—
数组([task\u date]=>2017年11月30日晚上8:14[task]=>qwe[task\u person]=>qwe[task\u status]=>0)
您需要对收到的数据使用urldecode()
这可能是你感兴趣的-
$data = $_POST['data'];
if (is_array($data)) {
}else{
}
导致—
数组([task\u date]=>2017年11月30日晚上8:14[task]=>qwe[task\u person]=>qwe[task\u status]=>0)
在您的案例中,$\u POST[“data”]
是一个url编码的查询字符串,请参见:
描述:将一组表单元素编码为字符串以供提交
首先需要parse_str()
解析查询字符串,然后可以对单个值使用urldecode()
,以获取原始值
编辑:如@splash58所述,这些值已经解码,请参阅以下手册:
注意:
创建的所有变量(或者如果设置了第二个参数,则返回到数组中的值)都已经是urldecode()d
因此:
在您的情况下,$\u POST[“data”]
是一个url编码的查询字符串,请参阅:
描述:将一组表单元素编码为字符串以供提交
首先需要parse_str()
解析查询字符串,然后可以对单个值使用urldecode()
,以获取原始值
编辑:如@splash58所述,这些值已经解码,请参阅以下手册:
注意:
创建的所有变量(或者如果设置了第二个参数,则返回到数组中的值)都已经是urldecode()d
因此:
正如我看到的,您在ajax请求变量方面遇到了一些问题。请更新您的代码如下
// Get the array
parse_str($_POST["data"], $data);
我希望这会有所帮助。因为我看到您在ajax请求变量方面遇到了一些问题。请更新您的代码如下
// Get the array
parse_str($_POST["data"], $data);
我希望这能有所帮助。什么是$data
?我得到数据-你是如何得到的?@Akintunde这就是我想知道的。使用.serialize()从js发送数据的格式是什么
如果它不是数组,它是什么?@splash58我正在使用ajax将它发送到php,如上面代码片段var\u dump($\u POST)中所示代码>什么是$data
?我得到数据-你是如何得到的?@Akintunde这就是我想知道的。使用.serialize()从js发送数据的格式是什么
如果它不是数组,它是什么?@splash58我正在使用ajax将它发送到php,如上面代码片段var\u dump($\u POST)中所示
它不是一个键值对,因为print\r返回一个大字符串而不是数组它不是键值对,因为print\r返回一个大字符串而不是数组let我要在ajax中明确我需要使用parse\u str(data)
然后在php中我需要urldecode($data)
?那我现在用foreach来对付他们?我可以检查数组?@Lloyd否,在php中只需parse_str()
。请注意,结果是在第二个参数中设置的。@jeroen问题出在js方面data@splash58如果您不需要添加额外的字段,这将是不必要的复杂,但我认为没有问题,您可以发送任何字符串作为值。@jeroen当然,您的解决方案可以解决问题。但是OP在使用此代码时不会获取错误源。从这个角度来看,最好更改js并使用内部PHP方法来创建正确的$\u post让我在ajax中说明我需要使用parse_str(data)
然后在PHP中我需要urldecode($data)
?那我现在用foreach来对付他们?我可以检查数组?@Lloyd否,在php中只需parse_str()
。请注意,结果是在第二个参数中设置的。@jeroen问题出在js方面data@splash58如果您不需要添加额外的字段,这将是不必要的复杂,但我认为没有问题,您可以发送任何字符串作为值。@jeroen当然,您的解决方案可以解决问题。但是OP在使用此代码时不会获取错误源。从这个角度来看,最好更改js并使用内部PHP方法来创建正确的$\u post。如果任何值包含编码的&
,则此方法无效。如果任何值包含编码的&
,则此方法无效。