2017-01-17 9 views
0

我正在研究一個代碼,我可以使用AJAXfor loop將一個JSON對象一個接一個推送到API中。這裏的代碼只是我一直在努力的一個粗略示例。我似乎無法使它在推動對象的API JSON array使用ajax和for循環將多個JSON對象逐個推送到API

var lms_json = <?php echo json_encode($json_data); ?>; 
var jobjects = JSON.parse(lms_json); 
var data = jobjects[0]; 

for (i = 0; i < jobjects.length; i++) { 
    var data = jobjects[i]; 


    $.ajax({ 
      type  : 'POST', 
      url  : url, 
      data  : data, 
      dataType : 'json', 
      success : function() { 
       console.log(success); 
      }, 
      error : function(error) { 
       console.log('Error') 
      } 

    }) 



} 
+1

你能告訴我你的錯誤嗎? – poushy

+0

你在哪裏發佈你的數據?爲什麼不將整個JSON對象或JSON字符串傳遞到您的ajax調用中,並執行處理服務器端? – Jeanger

回答

1

您需要使用JSON.stringify序列化JSON的對象上工作。另外,指定內容類型以使服務器期望JSON數據。這可能會實現:

$.ajax({ 
    url: url, 
    type: "POST", 
    data: JSON.stringify(data), 
    contentType: "application/json", 
    complete: callback 
}); 
1

我認爲你的問題是,AJAX是異步的過程,所以你可以做以下做是正確:

var lms_json = <?php echo json_encode($json_data); ?>; 
var jobjects = JSON.parse(lms_json); 
var i=0; 
function makeAjax(url, objs){ 
    var data = objs[i]; 
    i++; 
    $.ajax({ 
     type  : 'POST', 
     url  : url, 
     data  : data, 
     dataType : 'json', 
     success : function() { 
      console.log(success); 
      makeAjax(); 
     }, 
     error : function(error) { 
      console.log('Error') 
     } 

    }) 
} 
makeAjax(url,jobjects); 

所以每次成功回調後運行它會運行下一個。所以它會是同步過程。

我希望它有幫助。

相關問題