来自js的数据序列化了php中的格式

时间:2017-11-30 12:25:09

标签: javascript php arrays ajax

double relativeLocation = Math.Abs(((double)panel1.Left - (double)pictureBox2.Left) / (double)pictureBox2.Width)

在我的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) {

});

我无法发送它,当我使用$data = $_POST['data']; if (is_array($data)) { }else{ } 时,我可以

print_r();

但我总是在else部分结束,这意味着数据不是数组。

如果不是数组,数据的格式是什么?

4 个答案:

答案 0 :(得分:0)

您提供的数据不是数组。它是一个键值对,可以像$ data一样访问[' task'] =' qwe'

答案 1 :(得分:0)

您需要对收到的数据使用urldecode()

这可能是您感兴趣的内容 -

<?php
    $data = "task_date=11%2F30%2F2017+8%3A14+PM&task=qwe&task_person=qwe&task_status=0";
    parse_str($data, $output);
    print_r($output);
?>

结果如何 - 的 Array ( [task_date] => 11/30/2017 8:14 PM [task] => qwe [task_person] => qwe [task_status] => 0 )

答案 2 :(得分:0)

在您的情况下,$_POST["data"]是一个网址编码的查询字符串,请参阅jQuery manual

  

描述:将一组表单元素编码为字符串以供提交。

首先需要parse_str()来解析查询字符串,然后您可以对各个值使用urldecode()来获取原始值

修改如@ splash58所述,这些值已经过解码,请参阅parse_str()上的手册:

  

注意:

     

创建的所有变量(或者如果设置了第二个参数,则返回到数组中的值)已经是urldecode()d。

所以:

// Get the array
parse_str($_POST["data"], $data); 

答案 3 :(得分:0)

我看到你有一些ajax请求的问题变量。请更新您的代码,如下所示。

var data = $('#demoform').serialize();
var action = $('#demoform').attr('data-action');
console.log(data)
$.ajax({
  type: 'POST',
  url: action,
  data: data,
  success: function(data) {

  }
}).done(function(data) {

});

我希望这会有所帮助。