我比较两个字符串时遇到问题。问题是,当我比较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
答案 0 :(得分:2)
无法调用未定义的方法'valueOf'
错误消息显示valueOf
上调用了undefined
。这意味着status
为undefined
。因此,您可能希望删除valueOf
并简单地执行
if (status === "success") {
答案 1 :(得分:1)
更好的检查方法可能是,
if(status.toLowerCase() === "success")
答案 2 :(得分:0)
首先检查服务器代码返回的内容,如果可以,请尝试此
if (status === "success")
或者你可以这样做
if (data=== "success")
答案 3 :(得分:0)
valueOf
的方法所以,这应该做
$.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)
的回调函数?