当前位置:  开发笔记 > 编程语言 > 正文

无法使用jQuery AJAX将null传递给服务器.在服务器上收到的值是字符串"null"

如何解决《无法使用jQueryAJAX将null传递给服务器.在服务器上收到的值是字符串"null"》经验,为你挑选了2个好方法。

我正在转换javascript/php/ajax应用程序以使用jQuery来确保与Firefox以外的浏览器兼容.

我使用jQuery的ajax函数传递true,false和null值时遇到问题.

Javascript代码:

$.ajax
(
   {
      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
(
   ,
   {
      valueTrue : true,
      valueFalse: false,
      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     : ,
      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));

服务器输出:

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

Tgr.. 12

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



1> Tgr..:

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


谢谢。将数据编码为JSON可解决此问题。我误解了'dataType'选项的目的。

2> Fabrice..:

您可以使用undefined而不是null.

data: {
  valueTrue : true,
  valueFalse: false,
  valueNull : undefined
}

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有