2015-12-02 4 views
0

У меня есть функция javascript, которая зацикливается на моих данных, в основном я вызываю другую функцию внутри цикла, но она выполняется только один раз на последнем индексе, вот мой код и эта функция, которую я хочу выполнить на каждом время. в основном внутри цикла я называю Аякса, который прекрасно работать на каждом индексе цикла, но вопрос заключается в вызове функции db.transaction, которая выполняет только на последнем индексеФункция javascript внутри цикла работает только один раз

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); 
} 

ответ

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++; 
} 

Se e если это работает :)

+0

нет, что не работает ajax работает нормально, я хочу выполнить db.transaction (TblTitleSection, errorCB); эта функция на каждой итерации –

+0

ах я вижу, я неправильно прочитал вопрос;). что делает console.log («rows» + results.rows.length); вернуть? – cpalinckx

+0

он возвращает 5 записей –

Смежные вопросы