JavaScript/PHP字符串相等

JavaScript/PHP字符串相等,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在运行一个Ajax调用,它有一个success函数,它接收从PHP页面返回的变量,如下所示 阿贾克斯: PHP: 如您所见,我试图实现一个简单的登录页面,然后根据数据库查询返回的行数的结果重定向用户或显示警报 我不明白的是: console.log(html); // Returns "login" console.log(typeof html); // Returns string console.log(html === "login"); // Returns false 我尝试在

我正在运行一个Ajax调用,它有一个success函数,它接收从PHP页面返回的变量,如下所示

阿贾克斯:

PHP:

如您所见,我试图实现一个简单的登录页面,然后根据数据库查询返回的行数的结果重定向用户或显示警报

我不明白的是:

console.log(html); // Returns "login"
console.log(typeof html); // Returns string
console.log(html === "login"); // Returns false

我尝试在没有
json_encode()
的情况下使用echo-ing,但仍然会得到相同的结果。我使用的是
=
,但后来我读到使用
==
更安全,所以我切换到了这一点,但它仍然不会返回true。

您正在发送JSON,这意味着您正在发送文本字节:

"login"
"false"
注意这里的引号。您的JavaScript代码需要解码JSON,或者比较原始JSON本身:

 result = JSON.parse(html)
 if (result == "login")


一个简单的
console.log(html)
将向您显示您正在处理的内容。

您正在发送JSON,这意味着您正在发送文本字节:

"login"
"false"
注意这里的引号。您的JavaScript代码需要解码JSON,或者比较原始JSON本身:

 result = JSON.parse(html)
 if (result == "login")


一个简单的
console.log(html)
会告诉你你在处理什么。

如果你在PHP端使用
json\u encode
,那么你应该使用:

JavaScript端的
jQuery.parseJSON
-

html = jQuery.parseJSON(html);

如果在PHP端使用
json\u encode
,则应使用:

JavaScript端的
jQuery.parseJSON
-

html = jQuery.parseJSON(html);

要解决当前问题,请尝试
console.log(html.trim()=“login”)
trim()
删除处理纯文本时可以附加到响应中的额外空白。作为一种改进,返回JSON以完全避免问题。
JSON_encode
添加到字符串中,因此您实际上有带引号的
“login”
。看看:生成的“JSON”的快速
var_dump
将很容易显示问题;)要解决当前问题,请尝试
console.log(html.trim()=“login”);
trim()
删除处理纯文本时可以附加到响应中的额外空格。作为一种改进,返回JSON以完全避免问题。
JSON\u encode
添加到字符串中,因此实际上您有
登录
带引号。看一看:生成的“json”的快速
var_dump
会很容易地说明问题;)从这个问题来看,op确实运行了
console.log(html);//返回“login”
,但他们可能认为这是控制台显示字符串的方式。。。xDjson是一个字符串。简单明了。这就是问题的关键所在。将任意JS数据结构/类型编码为简单字符串以便传输。通过http接收的原始json将始终是一个字符串。根据问题,op实际上运行了
console.log(html);/返回“login”
,但他们可能认为这是控制台显示字符串的方式。。。xDjson是一个字符串。简单明了。这就是问题的关键所在。将任意JS数据结构/类型编码为简单字符串以便传输。通过http接收的原始json将始终是字符串。