【发布时间】:2020-10-04 02:43:16
【问题描述】:
我有一个 ajax 调用,其中成功函数被调用了两次。我试图分析但不明白为什么它被调用了两次。
我正在使用 for 循环调用 ajax 功能,并且在其中我根据条件 (f==i+1) 在成功函数中调用第二个 ajax。如果条件匹配,那么它将调用第二个 ajax 功能,但发生的情况是,在循环结束后,第一个 ajax 调用的成功是调用 alert("Check call"); 两次。如果i=1 在循环中,它应该只调用一次。
第一个循环中发生的情况是条件没有成功,当循环结束时,第一个 ajax 的成功次数与循环发生的次数一样多,f 变为 2,i+1 变为 2,所以它会检查条件两次。
任何帮助将不胜感激。
$(document).on("click", "#Rsub1", function (e) {
if ($("#Rvno").val() == "" || $("#Rvno").val() == null) {
alert("Please enter Vendor no");
} else {
for (var f = 0; f <= i; f++) {
(function (index) {
$.ajax({
type: "POST",
url: "../Home/RaisePReq",
data: formData,
dataType: 'json',
contentType: false,
processData: false,
cache: false,
success: function (r) {
if (f == i + 1) {
alert("Check call");
var fieldvals
$.ajax({
type: "POST",
url: "../Home/gridtbl",
data: JSON.stringify(fieldvals),
contentType: "application/json; charset=utf-8",
datatype: "json",
success: function (r) {
$('#grdtbl').html(r);
//jQuery.noConflict();
$('#ipcelltbl').DataTable({
dom: 'Bfrtip',
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
]
});
},
failure: function () {
alert("Error");
}
});
}
},
failure: function () {
alert("Error");
}
});
})(f);
}
}
});
【问题讨论】:
-
嗨,
i是什么?还有你为什么要检查if (f == i + 1) {里面的成功函数?请详细说明。 -
@Swati 是一个全局变量,我已经声明它从那里取值。
-
是否有必要将
if (f == i + 1) {条件放入success 中?为什么不把那个外部ajax调用?如果条件是true,那么你的first -ajax和second ajax将被执行,如果不是真的,它不会进入ajax。
标签: jquery ajax asp.net-mvc