在客户端,我将JSon数据发送到服务器
myJson = {
request_type: 1,
list_empty: false,
data_list: []
};
发送到服务器
$.ajax({
type: "POST",
url: self.serverURI,
data: self.gen_data(),
dataType: 'json',
success: function(result) {},
error: function(xhr, ajaxOptions, thrownError) {
console.log(xhr);
}
});
在服务器上
var m_bool = data.list_empty;
console.log("m_bool is printed: ", data.list_empty);
if (!m_bool) {
console.log("m_bool = false");
}
if (m_bool) {
console.log("m_bool = true");
}
有趣的是服务器打印
m_bool = true
为什么if语句有效? 我正在使用Node.js.
任何人都可以向我解释,谢谢!
答案 0 :(得分:0)
如果您正在使用
dataType: 'json'
请设置
contentType: 'application/json'
在你的jQuery ajax调用中,在发送之前JSON.stringify你的数据将作为一个可解析的javascript对象到达服务器。
当您使用NodeJS时,它将作为Javascript对象到达,具有正确的布尔值,而不是字符串。
如果省略内容类型属性,事情就会搞砸。
答案 1 :(得分:0)
您的代码正在打印m_bool = true
。
打印的原因是将收到list_empty: false
作为服务器端的字符串。
var s = "false";
if(!s) {
console.log("S is false");}
else {
console.log("S is true");
}
上述代码段的结果总是" S是真的"。
确保您在服务器端接收它作为JSON对象,添加必要的标题contentType: 'application/json'
答案 2 :(得分:-1)
在这种情况下,javascript会检查'm_bool'应为truthy。
if(m_bool)
但是如果你想检查布尔值,你应该写成:
if(m_bool === true)
这只会满足布尔值的真实情况。