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

什么时候应该向AJAX返回true / false,什么时候应该回显“ true” /“ false”

易修洁
2023-03-14
问题内容

我莫名其妙地迷糊了自己。

不知何故,我想到用AJAX(如$ .post)打PHP时,您必须回显“ true”或“ false”,而不是返回true /
false。我现在知道不是这种情况,但是有人可以为我分解吗?

测试布尔值是否存在问题?像这儿

... 
$.post('ajax/doThing',{data: data},
    function(response) {
        if(response) {
            doThis();
        }else{
            doThat();
        }

那是有问题的情况,对吗?在这里,我不能返回true / false,而是必须回显一个字符串并测试该字符串,是吗?

if(response === "true")

但是我看到布尔true / false返回到ajax函数。如果您无法在AJAX端测试布尔值,则此方法有什么用?为什么Ajax无法测试布尔值?

还是我仍然感到困惑?

编辑

只是想感谢大家在此方面的良好回答。我现在是+2人。


问题答案:

您可能还会查看返回HTTP错误代码,而不是在请求未真正成功时返回“成功”响应(HTTP状态代码200),然后使用error回调来处理不成功的请求。

但是,如果您想继续使用状态码200(很多人这样做):

客户端和服务器之间传输的数据 始终
是文本。诀窍是要确保客户端和服务器就客户端应如何反序列化文本(在收到后进行转换)达成一致。通常,您可能会返回以下四种情况之一:

  1. HTML(如果要填充页面元素)

  2. JSON(如果您想要一种轻巧,快速的方法来将数据发送到客户端)

  3. XML(如果您希望使用更重的快速方法将数据发送到客户端)

  4. 纯文本(实际上是您想要的任何内容)

客户端的操作将取决于Content-Type您在PHP页面中使用的标头。

我的猜测是,您使用的是几种内容类型中的任何一种,最终都会将数据作为字符串传递给回调。该字符串"true"是truthy,但这样是 字符串
"false"(仅空字符串falsey)。

长话短说:我可能会在我的PHP中使用它:

header('Content-Type', 'application/json');

…并从中返回此文本:

{"success": true}

要么

{"success": false}

…然后在您的成功处理程序中:

if (response.success) {
    // It was true
}
else {
    // It was false
}

或者,您可以返回Content-Typeof text/plain并使用

if (response === "true") {
    // It was true
}
else {
    // It was false
}

…但是这是一种手动反序列化,您可以在其中获得基础架构为您完成的工作。



 类似资料:
  • 我已阅读文档。但我仍然不确定何时不需要将其设置为 。在下面的代码中,如果我将其设置为 ,我根本看不到标头。如果我把它留,那么一切都很好。 以下视图调试层次结构将发出警告“宽度和位置不明确”。 我想每当我需要修改代码中的任何内容时,我都必须将设置为。 也许更正确的说法是,如果您需要删除它的所有约束,然后将其设置为< code>false,然后添加您喜欢的内容,在这种情况下,您需要为所有4条边添加约束

  • 问题内容: 我已经阅读了文档。但我仍然不确定何时不需要将其设置为。在下面的代码中,如果将其设置为,则根本看不到标题。如果我将其保留为,那么一切都很好。 View调试层次结构中的以下内容将给出警告“ 宽度 和 位置 不明确”。 我以为只要需要修改代码中的任何内容,都必须设置为。 如果您需要删除其所有约束,然后将其设置为,然后添加所需的内容,则可能是更正确的说法,在这种情况下,您需要为所有四个方面添加

  • 有没有人遇到过使用场景?由于是默认选项,我看不到你什么时候会使用它。

  • 而且 不是应该都返回吗?它不是基元变量,在第二个代码中,即使在添加零之后,它也会打印。我知道装箱(对于从-128到127的整数),但是为什么装箱在第二段代码中起作用而不是在第一段代码中起作用呢?

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或