微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ajax查询结果成功调用多次

如何解决Ajax查询结果成功调用多次

我有一个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);
            }
        }
    });

解决方法

您好@sam欢迎来到SO,

带有一个标志,在成功脚本之前的开始处初始化为 false ,如果成功,则将标志 true 放在成功脚本的最底端,并声明在成功脚本的开始中检查标志 true ,然后退出等。

enter image description here

,
if i = 1
then
for (var f = 0; f <= i; f++) {
for (var f = 0; 0 <= 1; f++)
for (var f = 1; 1 <= 1; f++)
stop because    2 <= 1 is false.
if i = 1 then for loop running 2 times.
,

For循环首先初始化变量,然后检查条件,然后执行一些代码并递增或递减变量。在您的情况下,当i = 1时,则在第一次执行时检查f

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。