我已经回顾了很多这样的问题的答案,现在我对最好的方式感到困惑.鉴于最新的
jquery,我想要
>调用ajax函数
>做ajax处理(成功或错误)//工作正常
>成功或错误将状态返回给调用函数进行进一步处理
在调用函数(doAjax)中,如何等待回调,然后完成处理成功或错误(在这种情况下,其成功清除表单,错误保持原样)
Thx为任何建议,
艺术
[编辑]
有一个打字错误,你们发现,打电话应该是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,errorThrown) { $('.rtnMsg').html("opps: " + textStatus + " : " + errorThrown); myRtnA = "Error" return myRtnA; } }); }
解决方法
你必须使用回调函数.请尝试以下:
$(function() { // I think doAjax should doAnAjax() // here you're passing callback // but you're not using it doAnAjax() doAnAjax(Url,function(myRtn) { if (myRtnV == "success") { resetForm($('#myForm')); resetForm($('form[name=addChlGrp]')); } else { $('.rtnMsg').html("Opps! Ajax Error"); } }); }); // pass callback as third parameter to doAnAjax() function doAnAjax(newUrl,callBack) { $.ajax({ url: newUrl,beforeSend: function() { $('.rtnMsg').html("<img src=_cssStyleImg_-A-loading.gif>"); },success: function(data,xhr) { $('.rtnMsg').html(data); myRtnA = "Success" return callBack( myRtnA ); // return callBack() with myRtna },error: function(xhr,errorThrown) { $('.rtnMsg').html("opps: " + textStatus + " : " + errorThrown); myRtnA = "Error" return callBack ( myRtnA ); // return callBack() with myRtna } });