来自jQuery Ajax的Bool参数在PHP中作为文字字符串“false”/“true”收到

前端之家收集整理的这篇文章主要介绍了来自jQuery Ajax的Bool参数在PHP中作为文字字符串“false”/“true”收到前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题与:

Cannot pass null to server using jQuery AJAX. Value received at the server is the string “null”

但是我再次问这个问题,因为在这个问题上的解决方案是非常丑陋的,我认为必须是一个更好的解决方案。

问题
当您使用POST将jQuery Ajax数据发送到PHP时,您将获取字符串“false”(string)而不是false(bool),“true”而不是true(bool)和“null”而不是NULL:

解决方案(在上述问题中提出):
在将数据发送到jQuery之前将数据转换为JSON,然后在PHP中解码该数据。
代码

Javascript代码

$.ajax
(
   {
      url     : <server_url>,dataType: 'json',type    : 'POST',success : receiveAjaxMessage,data    : JSON.stringify
      (
         {
            valueTrue : true,valueFalse: false,valueNull : null
         }
      )
   }
);

PHP代码

var_dump(json_decode(file_get_contents('PHP://input'),true));

对我来说,这不是一个解决方案,只是一个丑陋的黑客。

在我的情况下的问题是,我不能使用file_get_contents(‘PHP:// input’)来访问$ _POST,更重要的是,我不能使用$ _POST,因为我使用HMVC。

而且我知道我可以修复它在PHP中检查那些“false”,“true”和“null”,或者在jQuery中发送一个和0个true和false。
但是我认为这是一个很常见的问题,而且jQuery是一个非常常见的框架,所以我很确定有一个更好,更优雅的方式来发送jQuery中正确类型的数据。

解决方法

在我的经验,如果你有
dataType: 'json'

contentType: 'application/json'

在你的jQuery ajax调用中,JSON.stringify你的数据,然后发送它将作为一个可解析的JavaScript对象到达服务器。或者在我的情况下,我正在使用NodeJS serverside,它作为一个Javascript对象到达,具有正确的布尔值,而不是字符串bools。但是如果我省略了内容类型属性,那么事情就会被包含在bools中。

猜你在找的jQuery相关文章