Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js中的数据在php中序列化了什么格式_Javascript_Php_Arrays_Ajax - Fatal编程技术网

Javascript js中的数据在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

在我的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: 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。如果任何值包含编码的
&
,则此方法无效。如果任何值包含编码的
&
,则此方法无效。