我有一个jQuery对话框打开,然后进行AJAX调用。我想这样做,以便如果关闭对话框或按下“取消”按钮,则取消AJAX调用,并且不调用其回调函数。我可以想到一些使用变量的方式,例如:
function doStuff(){ var doCallback = true; $('#dialog').dialog({ title: 'Dialog Title', modal: true, buttons: { Cancel: function() { doCallback = false; doSomethingElse(); } } }); $.get('url/url/url', function(data){ if(doCallback){ doTheSuccessThing(data); } }); }
但是,从某种程度上来说,这对我来说很肮脏,并且实际上并没有阻止AJAX调用完成。是否有内置的方式来取消正在进行的AJAX呼叫?
好的,因此基于使用$ .get函数返回的XmlHttpRequest对象的建议,我想到了:
function doStuff(){ var ajaxRequest = $.ajax({ url : 'url/url/url', type : "GET", success : function(data){ ajaxRequest = null; doSuccessStuff(data); } }); $('#dialog').dialog({ title: 'Stuff Dialog', bgiframe: true, modal: true, buttons: { Cancel: function() { if (ajaxRequest) ajaxRequest.abort(); doCancelStuff(); } } }); }
它似乎可以正常工作,并且对我来说更干净。