当我尝试从函数返回对象时,我得到了未定义。而且我很确定该对象不是空的,否则alert(response.html);
不应该正常工作。
var Core = {
"Ajax" : function(url, data){
$.ajax({
type: "POST",
url: host + url,
data: data,
success: function(json){
var response = $.parseJSON(json);
if(response.status == "200"){
alert(response.html);
return response;
}
else{
alert(response.html);
return false;
}
},
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
}
});
}
};
答案 0 :(得分:6)
您可能误解了Ajax的概念,这是异步的。
请求完成后,浏览器将调用成功回调。你在成功回调中返回的任何东西都会消失。
无法将某些内容返回到发起请求的代码行 - 当成功回调触发时,您已经超过该行。
答案 1 :(得分:2)
您无法从异步函数返回内容。调用$.ajax()
后调用它的函数 - (几乎)总是在收到响应之前返回。
对success
回调中的响应执行任何操作。
PS:将dataType: 'json'
添加到您的ajax参数并使用json.status
- 无需自行解析。
除此之外,使用Firebug的控制台检查您实际从服务器返回的内容(alert()
不是调试器)
答案 2 :(得分:0)
你不能从$.ajax
电话中返回任何内容,它是异步的。您需要让它调用另一个回调函数并将其传递给response
。
此外,您不需要$.parseJSON(json)
。只需设置dataType: 'json'
,jQuery就会为你解析JSON。