当我使用jquery.ajax对PHP脚本进行POST时,为什么整数成为字符串

时间:2014-04-01 07:28:23

标签: javascript php jquery json

我花了最后一小时试图弄明白这一点无济于事。有很多关于jQuery和ajax()的帖子,但是我还没能找到一个处理我特定问题的帖子。

我的代码的基础知识:

在客户端:

var data = {"id": 1};
j.ajax({
  type: "POST",
  url: "postTestingResult.php",
  data: {'data': data},
  dataType: "json",
  success: ajaxSuccess,
  error: ajaxError
});

在使用PHP的服务器上:

$data = $_POST['data'];
echo $data; //{"id": "1"}

为什么整数值变成字符串?我该如何防止这种情况?我真的不想创建一个自定义函数来遍历我的数据对象(实际上非​​常复杂)来转换所有值。

非常感谢!

2 个答案:

答案 0 :(得分:5)

当参数通过$_GET$_POST发送时,它们会被解释为 字符串

答案 1 :(得分:2)

在您的情况下,您需要json_decode您收到的数据。然后,您将通过Ajax发送的类型中包含变量。

$data = json_decode($_POST['data'], true);
// $data['id'] is now int

$_POST['data']是一个字符串,正如其他答案中所解释的那样,但是当您解码它时,内部元素可以获得正确的类型。