循环中的javascript函数只运行一次

时间:2015-12-02 09:48:52

标签: javascript jquery ajax

我有一个javascript函数循环我的数据基本上我调用循环内的另一个函数,但它只在最后一个索引执行一次这是我的代码和这个函数我想每次执行。   基本上在循环内部我调用ajax,它在循环的每个索引上运行正常,但问题是调用db.transaction函数,它只在最后一个索引上执行

  

db.transaction(populateDB,errorCB);

function renderList(tx, results) {
   len = results.rows.length;
   console.log("rows" + results.rows.length);
   for (var i = 0; i < len; i++) {

       (function (i) {
           var nid = results.rows.item(i).nId;

           $.ajax({
                type: 'post',
                url: 'http://localhost:50972/LibraryService.asmx/GetTitleSections',
                dataType: 'json',
                data: "{'MainSectionId':'" + nid + "'}",
                contentType: 'application/json; charset=utf-8',
                async: false , 
                success: function (response) {
                    var data = response.d;
                    alert(data.nId);
                    TitleSectionData = data;
                },
                error: function (error) {
                    console.log(error);
                }
           });   
           db.transaction(TblTitleSection, errorCB);
       }) 
       (i);

       //  htmlstring += '<li>' + results.rows.item(i).strTitle + '</li>';
       // $('#resultList').append("<li>" + results.rows.item(i).strTitle + "</li>");
       $('#'+i).append( results.rows.item(i).strTitle );
       // $('#tblMainSection').append("<tr><td>" + results.rows.item(i).strTitle + "</td></tr>");
   }

   // $('#resultList').html(htmlstring);
}

1 个答案:

答案 0 :(得分:0)

也许你在运行ajax调用时继续循环。您可以尝试将增量(i ++)放入成功函数中以强制循环停止直到函数完成。语法似乎没问题。

取代:

for (var i = 0; i < len; i++) {

使用:

for (var i = 0; i < len;){

success: function (response) {
    var data = response.d;
    alert(data.nId);
    TitleSectionData = data;
}

使用:

success: function (response) {
    var data = response.d;
    alert(data.nId);
    TitleSectionData = data;
    i++;
}

看看是否有效:)