我创建了一个名为 save 的函数,当我调用 save 函数时,我获得成功undefined或object object
更新: 更新以获得ajax返回的jqxhr对象的值
function save() {
return $.ajax({
type: "POST",
url: "foo.json",
data: json_data,
contentType: 'application/json',
success: function (data, textStatus, xhr) {
$('<div id="loading">Loading...</div>').insertBefore('#form');
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
}
$(document).ready(function () {
$(function () {
$("#save").click(function () {
var jqxhr = save();
alert("success " + jqxhr.success);
alert("status " + jqxhr.status);
alert("status " + jqxhr.readyState);
});
});
});
答案 0 :(得分:5)
第十次。
ajax是异步的。
使用回调函数。
答案 1 :(得分:1)
Ninja由OP编辑
首先, return
函数中没有save
语句,因此返回undefined
值时可以正常工作。
其次,它不会那样工作。您需要返回$.ajax
调用(它本身返回jqXHR object
,您可以在其中挂接并设置不同事件的代码.Afterall,默认情况下运行 Ajax请求 asyncronously
以后...... return $.ajax({ ...
save().done(function( retValue ) {
alert('success ' + retValue);
});
答案 2 :(得分:0)
可能是这导致了这个问题,因为我看到你有两个文档就绪处理程序。
/***/
$(function () { // <--------------------I think this doesn't has to be here,
// so remove it and try if this solves
// the issue
$("#save").click(function () {
var success = save();
alert("success " + success);
});
}); // <-------------------------------and this one too