2011-09-05 133 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