2011-09-05 130 views
2

這是一個函數,我必須通過ajax調用寫入一個xml文件。該代碼在第一次進行ajax調用時工作正常。在每個循環的第二個循環中,ajax調用完全沒有進行。我不知道爲什麼。我指定asyn爲false。這沒有幫助。無論如何,這似乎不是問題。每個循環jQuery中的Ajax調用

$('#'+divid).children('div').children('div').each(function() { 

    var url = $(this).find('a'); 
    var urlname = url.text(); 
    var urllink = url.attr('href'); 
    var urlid = $(this).attr('id'); 

    alert ("from javascript urlid: "+urlid+" urlname: "+urlname+" urllink: "+urllink); 

      $.ajax({ 
      url: "add_url.php", 
      type: "POST", 
      data: { nodeid: divid, urlid: urlid, urlname: urlname, urllink: urllink }, 
      cache: false, 
      async: false, 
      success: function (response) { 
      if (response != '') 
       { 
        alert(response); 
       } 
      } 
     }); 
}); 
+1

設置'異步:在FALSE' ajax調用不會產生影響,因爲ause你正在循環一個自己的函數,這是由jQuery異步調用遍歷所有元素。然後每個執行的函數都會等待ajax調用完成。但他們都會同時運行。 – Wulf

+1

@Wulf:回調函數不是異步調用的:https://github.com/jquery/jquery/blob/1.6.3/src/core.js#L609-L647 –

+0

我已經使用了相同的格式,每個()函數中的ajax,它工作正常。你有沒有在Firebug中檢查過,只有一個POST請求正在進行,並且肯定有超過1個對象。你有多個提醒嗎? – MattP

回答

1

這確實對我的作品

http://jsfiddle.net/genesis/DTjZQ/4(響應狀態發送3 POST請求404)

確保您的HTML是好的,具有相同的結構,我的小提琴

+0

我還能夠獲得顯示每個函數遍歷所有孩子的警報語句。問題在於php函數沒有被調用。當我測試小提琴時,我沒有得到確認PHP被調用的響應。 – user823527

+0

您是否可以在PHP函數中添加一個響應來確認它被調用三次? – user823527

+0

@ user823527:因爲小提琴不支持PHP。在你的情況下,PHP中存在問題,而不是JS – genesis

0

而不是使多個AJAX請求的話,建議的數據附加到一個數組,然後發送對象的整個陣列。

(基本上您使用對數據的文字對象將被附加到陣列而不是在一個請求中使用,然後一旦每個完成後,你將發送陣列中的數據。)

+0

我想到了。我只是想知道爲什麼ajax電話只有一次。我將看到數組是如何工作的。 – user823527