javascript中的字符串比较失败

时间:2014-01-18 08:21:25

标签: javascript jquery

我比较两个字符串时遇到问题。问题是,当我比较status变量与"success"字符串文字的相等性时,它返回False,但当我通过{{1}检查success的值时}或alert我得到console.log

当我使用"success"时,我收到的错误是status.valueOf() == "success"但是在检查

Can not call method 'valueOf' of undefined

更新2:

这是我记录// this is a callback function used in jQuery.post(url, data, callback) this.callback = function(data, status, jqXHR) { alert(status); // shows that status is equal to "success" console.log("STATUS: " + status); console.log("STATUS CONSTRUCTOR: " + status.constructor); console.log("STATUS TYPE: " + (typeof status)); if(status.valueOf() === "success") { var data = JSON.parse(data); if(data.errors) { this.success(data.message); } else { this.failure(data.message, data.errors); } } else { alert("WTF"); } }; 的一些属性后得到的:

status

5 个答案:

答案 0 :(得分:2)

  

无法调用未定义的方法'valueOf'

错误消息显示valueOf上调用了undefined。这意味着statusundefined。因此,您可能希望删除valueOf并简单地执行

if (status === "success") {

答案 1 :(得分:1)

更好的检查方法可能是,

if(status.toLowerCase() === "success")

答案 2 :(得分:0)

首先检查服务器代码返回的内容,如果可以,请尝试此

if (status === "success")

或者你可以这样做

 if (data=== "success")

答案 3 :(得分:0)

  1. 您用于jQuery ajax的方法几乎已弃用。
  2. 正如评论中已经提到的,不需要使用状态为valueOf的方法
  3. 所以,这应该做

    $.ajax({
    
        url: 'url2ajax.php',
        dataType: 'datatype returned by the url ajaxed maybe json',
        data: {//list of key-value pairs to be send },
        success: function( oData ) {
            //call back to perform on a successful ajax.
            //Data returned from ajaxed url available as argument, oData
        },
        error: function( ojQXhr, strStat, strErr ) {
            //callback to perform on a failed ajax request
            //jQuery XHR object, status string and error message available as argument
        }
    
    });
    

    有关详细信息,请参阅jQuery.ajax

答案 4 :(得分:0)

我终于找到了问题。问题是我将回调函数定义为对象this.callback = function(){...};的属性我改变了它并定义了一个普通的javascript函数并且它有效。其实我不知道为什么?任何人都知道为什么我不能使用对象方法作为$.post(url, data, callback)的回调函数?

相关问题