javascript奇怪的比较字符串

这个问题在这里已经有了答案:

  • 应该在JavaScript比较中使用哪个等于运算符(== vs ===)? 50个答案
  • 在JavaScript和=== ===之间的差异[复制] 2个答案

  • 如果console.log(response)的输出是

    {"type":"success","desc":"something"}
    

    那么response很可能仍然是一个字符串(包含JSON),并且字符串没有type属性:

    > "foo".type == "error" // `undefined` is never equal to a string
    false
    

    对象在控制台中通常看起来不同:

    > console.log({"type":"success","desc":"something"})
    Object {type: "success", desc: "something"} // in Chrome and Firefox at least
    

    解决方案 :首先解析字符串:

    response = JSON.parse(response);
    

    与jQuery相关:

    我注意到你打算让jQuery为你解析JSON,但是你传递了"json"给错误的函数。 您必须将它传递给$.post(...) ,而不是.done(...)

    $.post("sendEmail.php", post_data, "json").done(...);
    // instead of 
    // $.post("sendEmail.php", post_data).done(..., "json");
    

    那么你不需要手动解析它。


    相关:在JavaScript中解析JSON?

    链接地址: http://www.djcxy.com/p/19435.html

    上一篇: javascript strange comparison of strings

    下一篇: Appropriate usage of == and === in JavaScript