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

我花了最后一小时试图弄清楚这一点无济于事。 有很多关于jQuery和ajax()的post,但我找不到一个处理我特定问题的post。

我的代码的基础知识:

在客户端:

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"} 

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

非常感谢!

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

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

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

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

可能需要适当地投射它们以使它们适合您的工作方式。