Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.Get方法在each()循环中不起作用_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript $.Get方法在each()循环中不起作用

Javascript $.Get方法在each()循环中不起作用,javascript,jquery,ajax,Javascript,Jquery,Ajax,在下拉选择中,我运行以下jquery,我使用每个jquery遍历一个li 我的$.get需要一些时间才能从服务器获取数据,所以我通过切换来加载img。但每个方法都不会等到get带来数据,而是直接跳到末尾 如何在get从服务器带来数据之前保存这些数据 JQUERY jd('#UserId').change(function (e) { var selectedID = jd(this).val(); jd('.load

在下拉选择中,我运行以下jquery,我使用每个jquery遍历一个li

我的$.get需要一些时间才能从服务器获取数据,所以我通过切换来加载img。但每个方法都不会等到get带来数据,而是直接跳到末尾

如何在get从服务器带来数据之前保存这些数据

JQUERY

jd('#UserId').change(function (e) {
            var selectedID = jd(this).val();                
            jd('.loading').css("display", "block");
            jd(".stats_box li").each(function (index, liElement) {
                var li_id = liElement.id;

                /* Request the partial view with .get request. */
                jd.get('/Home/_CaseStatus?type=CaseStatus&user_id=' + selectedID, function (data) {                    

                    jd('#CaseStatus').html(data);

                });
            });
            alert("End"); 
            jd('.loading').css("display", "none");
        });

在Jquery上面运行时,它会直接向我显示警报&然后过一段时间就会看到数据。

您需要等待所有请求完成

jd('#UserId').change(function (e) {
    var selectedID = jd(this).val();
    jd('.loading').css("display", "block");
    var rqts = [];
    jd(".stats_box li").each(function (index, liElement) {
        var li_id = liElement.id;
        rqts.push(jd.get('/Home/_CaseStatus?type=CaseStatus&user_id=' + selectedID, function (data) {
            //I've a doubt about the target element
            jd('#CaseStatus').html(data);
        }));
    });
    //wait for all requests to complete
    jd.when.apply(jd, rqts).always(function () {
        jd('.loading').css("display", "none");
    })
});
正如meagar所建议的,最好使用.map

jd('#UserId').change(function (e) {
    var selectedID = jd(this).val();
    jd('.loading').css("display", "block");
    var rqts = jd(".stats_box li").map(function (liElement, index) {
        var li_id = liElement.id;
        return jd.get('/Home/_CaseStatus?type=CaseStatus&user_id=' + selectedID, function (data) {
            //I've a doubt about the target element
            jd('#CaseStatus').html(data);
        });
    });
    //wait for all requests to complete
    jd.when.apply(jd, rqts).always(function () {
        jd('.loading').css("display", "none");
    })
});

您需要等待所有请求完成

jd('#UserId').change(function (e) {
    var selectedID = jd(this).val();
    jd('.loading').css("display", "block");
    var rqts = [];
    jd(".stats_box li").each(function (index, liElement) {
        var li_id = liElement.id;
        rqts.push(jd.get('/Home/_CaseStatus?type=CaseStatus&user_id=' + selectedID, function (data) {
            //I've a doubt about the target element
            jd('#CaseStatus').html(data);
        }));
    });
    //wait for all requests to complete
    jd.when.apply(jd, rqts).always(function () {
        jd('.loading').css("display", "none");
    })
});
正如meagar所建议的,最好使用.map

jd('#UserId').change(function (e) {
    var selectedID = jd(this).val();
    jd('.loading').css("display", "block");
    var rqts = jd(".stats_box li").map(function (liElement, index) {
        var li_id = liElement.id;
        return jd.get('/Home/_CaseStatus?type=CaseStatus&user_id=' + selectedID, function (data) {
            //I've a doubt about the target element
            jd('#CaseStatus').html(data);
        });
    });
    //wait for all requests to complete
    jd.when.apply(jd, rqts).always(function () {
        jd('.loading').css("display", "none");
    })
});
在循环中使用ajax时使用

并等待所有请求完成

jd('#UserId').change(function (e) {
    var selectedID = jd(this).val();
    jd('.loading').css("display", "block");
    var rqts = [];
    jd(".stats_box li").each(function (index, liElement) {
        var li_id = liElement.id;
        rqts.push(jd.get('/Home/_CaseStatus?type=CaseStatus&user_id=' + selectedID, function (data) {
            //I've a doubt about the target element
            jd('#CaseStatus').html(data);
        }));
    });
    //wait for all requests to complete
    jd.when.apply(jd, rqts).always(function () {
        jd('.loading').css("display", "none");
    })
});
见下文

var work_list=[];

jd('#UserId').change(function (e) {
            var selectedID = jd(this).val();                
            jd('.loading').css("display", "block");
            jd(".stats_box li").each(function (index, liElement) {
                var li_id = liElement.id;
            /* Request the partial view with .get request. */
          work_list.push( jd.get('/Home/_CaseStatus?type=CaseStatus&user_id=' + selectedID, function (data) { 
                jd('#CaseStatus').html(data);

            }));

         //now it  wait for all requests to complete then come in done()                
        jd.when.apply(jd, work_list).done(function() {
              alert( "end" );
            });
        });

        jd('.loading').css("display", "none");
    });
在循环中使用ajax时使用

并等待所有请求完成

jd('#UserId').change(function (e) {
    var selectedID = jd(this).val();
    jd('.loading').css("display", "block");
    var rqts = [];
    jd(".stats_box li").each(function (index, liElement) {
        var li_id = liElement.id;
        rqts.push(jd.get('/Home/_CaseStatus?type=CaseStatus&user_id=' + selectedID, function (data) {
            //I've a doubt about the target element
            jd('#CaseStatus').html(data);
        }));
    });
    //wait for all requests to complete
    jd.when.apply(jd, rqts).always(function () {
        jd('.loading').css("display", "none");
    })
});
见下文

var work_list=[];

jd('#UserId').change(function (e) {
            var selectedID = jd(this).val();                
            jd('.loading').css("display", "block");
            jd(".stats_box li").each(function (index, liElement) {
                var li_id = liElement.id;
            /* Request the partial view with .get request. */
          work_list.push( jd.get('/Home/_CaseStatus?type=CaseStatus&user_id=' + selectedID, function (data) { 
                jd('#CaseStatus').html(data);

            }));

         //now it  wait for all requests to complete then come in done()                
        jd.when.apply(jd, work_list).done(function() {
              alert( "end" );
            });
        });

        jd('.loading').css("display", "none");
    });

它是异步的,你不应该持有它。它是异步的,你不应该持有它。请在你的回答中用jd替换$更好地使用。map而不是。each;rqts=jd…映射函数{return$.get…}@meagar yes。。。这将使贝尼斯……工作准确。。!!请在回答中用jd替换$,但最好使用.map而不是.each;rqts=jd…映射函数{return$.get…}@meagar yes。。。这将使贝尼斯……工作准确@meagar我用了很多时间,所以我相信如果你知道一些更好的,那么请与我们分享:看看它在哪里。它在.each中,所以每次迭代时都要执行。它应该在所有迭代之后发生一次。谢谢您的回答,但在更改事件之前声明工作列表并没有给我完美的结果。在将其包含在更改中后,效果非常好。@meagar我用了很多时间,所以我确信如果您知道一些更好的,请与我们分享:看看它在哪里。它在.each中,所以每次迭代时都要执行。它应该在所有迭代之后发生一次。谢谢您的回答,但在更改事件之前声明工作列表并没有给我完美的结果。在将其包含在变更中之后,它工作得非常好。