java脚本如果语句不起作用?

时间:2016-12-21 06:54:53

标签: javascript node.js

在客户端,我将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

enter image description here

为什么if语句有效? 我正在使用Node.js.

任何人都可以向我解释,谢谢!

3 个答案:

答案 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)

这只会满足布尔值的真实情况。