我想在complete()方法方面理解下面的AJAX调用;
当我更换complete()使用success(),我得到一个空的responseText就像用AJAX error()方法.
另一方面,当我将complete()方法保持原样时,一切都按预期工作.
它success()早于返回complete()吗?
$("#formnaw").submit(function() {
var fnc = invoerFnc.attr("value");
var vnaam = invoerVnaam.attr("value");
var anaam = invoerAnaam.attr("value");
var str1 = invoerStr1.attr("value");
var nr1 = invoerNr1.attr("value");
var pc1 = invoerPc1.attr("value");
var pl1 = invoerPl1.attr("value");
var tel1 = invoerTel1.attr("value");
var mob1 = invoerMob1.attr("value");
var em1 = invoerEm1.attr("value");
var goknop = $("#formnaw > .instelling_go");
//we deactiveren de submit knop tijdens het verzenden
goknop.attr({
disabled: true
});
goknop.blur();
//stuur de post variabelen naar livetabs.php
$.ajax({
type: "POST",
url: "registraties/instellingenact.php",
data: "actie=wijzignaw&vnaam=" + vnaam + "&anaam=" + anaam + "&functie=" + fnc + "&straat=" + str1 + "&nr=" + nr1 + "&postcode=" + pc1 + "&plaats=" + pl1 + "&tel=" + tel1 + "&mob=" + mob1 + "&email=" + em1,
timeout: 5000,
success: function(data, textStatus) {
alert('bij success');
//doe iets
} //EINDE success
,
error: function(XMLHttpRequest, textStatus, errorThrown) {
if (textStatus == 'timeout') {
//doe iets
} else if (textStatus == 'error') {
//doe iets
}
//her-activeer de zend knop
goknop.attr({
disabled: false
});
} //EINDE error
,
complete: function(data) {
updatelijst.append(data.responseText + "<br>");
if (data.responseText.indexOf("Fout") != -1) {
$('#formnaw').find('td.foutnr1').prepend(data.responseText);
} else {
updatelijst.animate({
opacity: 'show'
}, 1000, function() {});
}
//her-activeer de zend knop
goknop.attr({
disabled: false
});
} //EINDE complete
}); //EINDE ajax
//we stoppen het standaard gedrag van een submit, zodat de pagina niet wordt vernieuwd.
return false;
});
Run Code Online (Sandbox Code Playgroud)
jit*_*ter 48
complete执行success或error回调后执行.
也许你应该检查第二个参数complete提供.这是一个拥有ajaxCall成功类型的String.
这里将更详细地描述不同的回调 jQuery.ajax( options )
我猜你错过了这个complete和success函数(我知道不一致的API)传入不同数据的事实.success只complete获取数据,得到整个XMLHttpRequest对象.当然responseText,数据字符串上没有属性.
所以,如果你更换complete与success你也有更换data.responseText用data而已.
成功
该函数传递两个参数:从服务器返回的数据,根据'dataType'参数格式化,以及描述状态的字符串.
完成
该函数传递两个参数:XMLHttpRequest对象和描述请求成功类型的字符串.
如果您需要XMLHttpRequest在成功回调中访问整个对象,我建议您尝试这样做.
var myXHR = $.ajax({
...
success: function(data, status) {
...do whatever with myXHR; e.g. myXHR.responseText...
},
...
});
Run Code Online (Sandbox Code Playgroud)
好吧,从隔离来看complete(),$.ajax 中的就像finallytry catch 块中的一样。
如果您在任何编程语言中使用 try catch 块,那么您是否成功执行某件事或在执行中遇到错误都没有关系。finally{} 块将始终被执行。
这同样适用于complete()在阿贾克斯$,你是否得到success()响应,或者error()在complete()一次执行已经完成函数总是会被调用。
| 归档时间: |
|
| 查看次数: |
120691 次 |
| 最近记录: |