JavaScript foreach同时发送所有内容

时间:2015-05-24 14:41:57

标签: javascript php jquery ajax

我是javascript编程的新手,所以我在尝试编写脚本时遇到了问题。 我有一个textarea和一个调用函数的按钮" test()" 在textarea中,我将插入Links,我将使用AJAX发布每个链接并从回调中获得响应。

我可以通过使用jquery函数.each或for(i = 0; i

function test() {
    document.getElementById("qitu").innerHTML = 'Checking Started...';
    var mylines = $("#ti").val().split("\n");

    for(i=0;i<mylines.length;i++) {
        if(mylines[i] != "") {
            $.ajax({
                type:       "POST",
                url:        "callback.php",
                data: { checklink : mylines[i] },
                 beforeSend: function() {
                    document.getElementById("qitu").innerHTML = 'Checking ' + mylines[i];
                 },
                 success: function(data) {
                    var result = JSON.parse(data);
                    i++;
                    if(result.status == 'invalid') {

                    } else {

                    }
                 },

                 complete: function() {
                    document.getElementById("qitu").innerHTML = 'Checking is done';
                 }
            });
        }

    }
}

那么有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好的,我通过调用函数on complete并继续下一行来修复此问题,方法是记录每次错误或成功后的行数

function other(n,b,g) {

document.getElementById("qitu").innerHTML = 'Checking Started...';
var mylines = $("#ti").val().split("\n");
var good = 0;
var bad = 0;
var i = 0;
var remaining = mylines.length;
    if(mylines[n] != "") {
        $.ajax({
            type:       "POST",
            url:        "class.uploader.php",
            data: { mydata : mylines[n] },
             beforeSend: function() {
                // my loading function
             },
             success: function(data) {
                var result = JSON.parse(data);
                if(result.status == 'invalid') {
                    b++;
                    document.getElementById("bad").innerHTML = b;

                } else {
                    g++;
                    document.getElementById("good").innerHTML = g;
                    document.getElementById("mythings").innerHTML += '<tr><td>' + result.thing + '</td><td>' + result.code + '</td></tr>';
                }
             },
             complete: function() {
                 n++;
                 if(n < mylines.length) {
                    other(n,b,g);
                 }
                 remaining -= n;
                 document.getElementById("remaining").innerHTML = remaining;
                if(remaining == 0) {
                    document.getElementById("qitu").innerHTML = 'Checking is done';
                }

             }
        });
    }

}

我从一个对此页面发表评论的人那里得到了这个想法,我希望这有助于某人。