当前位置: 首页 > 面试题库 >

jQuery Ajax的Bool参数在PHP中作为原义字符串“ false” /“ true”接收

阎宾实
2023-03-14
问题内容

但是我再问一遍,因为该问题的解决方案非常丑陋,我认为必须是更好的解决方案。

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

解决方案
(在上述问题中提出):先将数据转换为JSON,然后再使用jQuery发送,然后在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));

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

我遇到的问题是我无法使用file_get_contents(’php:// input’)访问$ _POST,甚至更多,由于使用HMVC,因此我无法使用$
_POST。

而且我知道我可以通过检查PHP中的“ false”,“ true”和“ null”,或在jQuery中发送1和0分别显示true和false来解决此问题。
但是我认为这肯定是一个非常普遍的问题,而jQuery是一个非常普遍的框架,因此,我敢肯定,有一种更好而优雅的方法可以在jQuery中发送具有正确类型的数据。


问题答案:

以我的经验,如果有

dataType: 'json'

contentType: 'application/json'

在您的jQueryajax调用中,然后在发送数据之前JSON.stringify数据将作为可解析的javascript对象到达服务器。或者在我的情况下,我正在使用NodeJS服务器端,它作为Javascript对象到达,带有正确的布尔值,而不是字符串布尔值。但是,如果我忽略了contenttype属性,那么所有事情都将变得愚蠢,包括布尔。



 类似资料:
  • 所以我写了一个JSON文件代码来帮助显示书名,但是当我编译时,我总是收到同样的错误,有办法修复吗?还是我做错了什么? 代码如下: 已显示的错误:

  • 红线位于“打开导航抽屉”和“关闭导航抽屉”下 这张图片显示了这个问题

  • 以下代码不打印任何内容: 但以下代码打印: 当为时,是否有比添加语句更好的方法打印或?

  • 问题内容: 我不知道PHP如何在内部处理 正确/错误 比较。我知道true定义为1,false定义为0。执行此操作时,它会回显“ true ”。PHP如何将“ a”识别为1? 问题答案: PHP文档中包含有关布尔值和类型比较表的内容。 转换为布尔值时,以下值为FALSE: 布尔值本身 整数(零) 浮点数(零) 空字符串和 字符串 零元素数组 成员变量为零的对象(仅PHP 4) 特殊类型(包括未设置

  • 问题内容: 目前,我正在使用String操作,在进行演示时,我发现了一些不同的行为。 下面是我的代码。 } 而上面的代码就是。我正在运行传递命令行参数的代码。 str1 == str2 :: true str1 == str3 :: false strArray [0] == strArray [1] :: true str1 == strArray [1] :: true strArray1 [

  • 问题内容: 我一直在想是否可以在PHP中将函数作为参数传递;我想要类似的东西,当您在JS中编程时: 我想要的是在exampleMethod中的某处执行该功能。这在PHP中可行吗? 问题答案: 如果您使用的是PHP 5.3.0或更高版本,则是可能的。 请参见手册中的匿名函数。 对于您的情况,您将这样定义: