使用jQuery AJAX不能将null传递给服务器.服务器收到的值是字符串“null”

前端之家收集整理的这篇文章主要介绍了使用jQuery AJAX不能将null传递给服务器.服务器收到的值是字符串“null”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在转换 javascript / PHP / ajax应用程序以使用jQuery来确保与Firefox以外的浏览器兼容.

我无法使用jQuery的ajax函数传递true,false和null值.

Javascript代码

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

PHP代码

var_dump($_POST);

服务器输出

array(3) {
  ["valueTrue"]=>
  string(4) "true"
  ["valueFalse"]=>
  string(5) "false"
  ["valueNull"]=>
  string(4) "null"
}

问题是null,true和false值被转换为字符串.

目前使用的Javascript AJAX代码正确传递null,true和false,但只适用于Firefox.

有没有人知道如何使用jQuery解决这个问题?

以下是一些工作代码(不使用jQuery)与上面给出的不工作代码进行比较.

Javascript代码

ajaxPort.send
(
   <server_url>,{
      valueTrue : true,valueNull : null
   }
);

PHP代码

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

服务器输出

array(3) {
  ["valueTrue"]=>
  bool(true)
  ["valueFalse"]=>
  bool(false)
  ["valueNull"]=>
  NULL
}

请注意,null,true和false值被正确接收.

还要注意,在第二种方法中,$_POST数组不在PHP代码中使用.我认为这是问题的关键,但是我找不到使用jQuery来复制这个行为的方法.

在下面的答案被接受之后添加了这一节.

这是原始代码的更正版本.

Javascript代码

$.ajax
(
   {
      url     : <server_url>,data    : JSON.stringify
      (
         {
            valueTrue : true,valueNull : null
         }
      )
   }
);

PHP代码

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

服务器输出

array(3) {
  ["valueTrue"]=>
  bool(true)
  ["valueFalse"]=>
  bool(false)
  ["valueNull"]=>
  NULL
}

解决方法

你会期待什么?您将这些值作为POST参数发送,这是简单的文本字符串.如果要进行类型安全传输,请使用某种编码,例如JSON. (这不是dataType所做的 – 指的是服务器的响应.)

猜你在找的jQuery相关文章