2014-10-18 72 views
0

我想使用兩個單獨的ajax調用填充兩個表。以下是我的代碼。使用兩個Ajax調用填充兩個html表中的數據

var payload = "authUserName=admin&authPassword=admin"; 

$.ajax({ 
    url: "https://appserver.dev.cloud.wso2.com/t/madusanka/webapps/projecttracker-default-SNAPSHOT/services/projecttracker/userservice/user/1/projects", 
    type: "POST", 
    async: false, 
    dataType: "json", 
    data: payload, 
    complete: function(data) { 
    alert("complete " + JSON.stringify(data)); 

//   for(var i = 1; i<= data.projects.project.length; i++){ 
//     var tableRow = "<tr><td>" + data.projects.project[i].projectName + "</td><td>" + data.projects.project[i].startDate + "</td><td>" + data.projects.project[i].endDate + "</td><td>" + data.projects.project[i].statusId + "</td><td>" + "delete" + "</td></tr>"; 
//     $("#projectListTable tbody:last").append(tableRow); 
//   } 

    } 
}).then(function(data) { 

    alert("started"); 

    var payload2 = "authUserName=admin&authPassword=admin"; 

    $.ajax({ 
     url: "https://appserver.dev.cloud.wso2.com/t/madusanka/webapps/projecttracker-default-SNAPSHOT/services/projecttracker/userservice/user/1/projects", 
     type: "POST", 
     async: false, 
     dataType: "json", 
     data: payload2 
    }).then(function(data) { 
     alert("ended"); 
     for(var i = 1; i<= data.projects.project.length; i++){ 
      var tableRow = "<tr><td>" + data.projects.project[i].projectName + "</td><td>" + data.projects.project[i].startDate + "</td><td>" + data.projects.project[i].endDate + "</td><td>" + data.projects.project[i].statusId + "</td><td>" + "delete" + "</td></tr>"; 
      $("#userTable tbody:last").append(tableRow); 
     } 
    });       
}); 

如果我運行上面的代碼,它會運行良好並執行「then」中的任何函數。

當我取消註釋註釋循環時,它將不會執行超出循環。填充項目列表表格​​後,它會停止執行。因此「然後」功能不會被執行。似乎只有一個表數據人口循環可以在那裏。

我希望兩個表都可以使用ajax一個接一個填充。我對此很困惑。有人能指出我正確的方向嗎?

+1

您是否嘗試過尋找在控制檯中的任何錯誤?按F12打開控制檯(至少在IE和Chrome上),看看在for-loop運行時是否出現錯誤。 – Travesty3 2014-10-18 03:32:05

+0

感謝您的回覆。我把它修好了。我通過1開始循環做了一個愚蠢的錯誤,它應該從0開始。 – plr 2014-10-18 04:35:34

回答

1

爲什麼你需要同時擁有completethen回調函數?看看你的代碼,他們似乎沒有做任何不同的事情。你還不如干脆把它們合併這樣的:

var payload = "authUserName=admin&authPassword=admin"; 
$.ajax({ 
    url: "https://appserver.dev.cloud.wso2.com/t/madusanka/webapps/projecttracker-default-SNAPSHOT/services/projecttracker/userservice/user/1/projects", 
    type: "POST",  
    dataType: "json", 
    data: payload, 
    complete: function(data) { 
    alert("complete " + JSON.stringify(data)); 

    for(var i = 1; i<= data.projects.project.length; i++){ 
     var tableRow = "<tr><td>" + data.projects.project[i].projectName + "</td><td>" + data.projects.project[i].startDate + "</td><td>" + data.projects.project[i].endDate + "</td><td>" + data.projects.project[i].statusId + "</td><td>" + "delete" + "</td></tr>"; 
     $("#projectListTable tbody:last").append(tableRow); 
     $("#userTable tbody:last").append(tableRow); 
    } 
    } 
});        
+0

感謝您的回覆。其實我想要兩個不同的網址的Ajax電話,但我正在測試相同的網址。 是的,我可以把一切都完成,但結果是一樣的。 順便說一句,我弄明白了。這是一個愚蠢的錯誤,我從1開始for循環,但數組實際上是從0開始。 – plr 2014-10-18 04:33:47

相關問題