【发布时间】:2012-07-19 13:01:45
【问题描述】:
我已经查看了很多此类问题的答案,现在我对最好的方法感到困惑。鉴于最新的jquery,我想要
- 调用 ajax 函数
- 进行 ajax 处理(成功或错误)// 工作正常
- 成功或错误时将状态返回给调用函数以供进一步处理
在调用函数(doAjax)中,如何等待回调然后完成处理成功或错误(在这种情况下,成功时清除表单,错误时保持原样)
感谢任何建议,
艺术 [编辑] 你们发现有一个错字,调用应该是 doAnAjax 而不是 doAjax
$(function () {
doAnAjax(Url, data, function (myRtn) {
if (myRtn == "success") {
resetForm($('#myForm'));
resetForm($('form[name=addChlGrp]'));
} else {
$('.rtnMsg').html("Opps! Ajax Error");
}
});
});
function doAnAjax(newUrl, data) {
$.ajax({
url: newUrl,
async: true,
dataType: 'html',
beforeSend: function () {
$('.rtnMsg').html("<img src=_cssStyleImg_-A-loading.gif>");
},
type: "GET",
data: data,
cache: false,
success: function (data, textStatus, xhr) {
$('.rtnMsg').html(data);
myRtnA = "Success"
return myRtnA;
},
error: function (xhr, textStatus, errorThrown) {
$('.rtnMsg').html("opps: " + textStatus + " : " + errorThrown);
myRtnA = "Error"
return myRtnA;
}
});
}
【问题讨论】:
-
最好的方法是使用回调。
-
@FelixKling 虽然我同意这一点,但在某些情况下,同步行为是首选。但正如我在回答中解释的那样,虽然 jQuery ajax 函数确实允许您执行同步调用,但它有点误导,因为它不再是真正的 ajax 调用了。
-
@Jon:可能有用例,但这并不能改变这样一个事实,即这是关于该主题的所有其他数百万个问题的重复;)这已经讨论过很多次...
-
@FelixKling 我没有异议,我去喝咖啡时我的页面没有刷新,所以当我做我的时候没有看到你的第二条评论:)。