2011-09-05 4 views
2

다음은 ajax 호출을 통해 XML 파일에 작성해야하는 함수입니다. 아약스 호출이 처음 만들어지면 코드가 제대로 작동합니다. 두 번째 루프에서는 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

에서와 동일한 구조와 함께 작동 Ajax 호출은 효과가 없습니다. ause는 당신 자신의 함수에서 루핑을하고 있으며, 이것은 모든 요소를 ​​반복하기 위해 jQuery에 의해 비동기 적으로 호출된다. 그러면 실행 된 각 함수는 ajax 호출이 완료 될 때까지 기다립니다. 그러나 그들은 모두 같은 시간에 달릴 것입니다. – Wulf

+1

@Wulf : 콜백 함수는 ** 비동기라고하는 ** 아닙니다 ** : https://github.com/jquery/jquery/blob/1.6.3/src/core.js#L609-L647 –

+0

동일한 형식을 사용했습니다. , 각() 함수에서 아약스 그리고 그것은 잘 작동합니다. Firebug에서 한 번만 POST 요청이 이루어 졌는지 확인 했습니까? 분명히 1 개 이상의 개체가 있습니다. 여러 개의 알림 메시지가 표시됩니까? – MattP

답변

1

FALSE '의 :이 정말 날

http://jsfiddle.net/genesis/DTjZQ/4 (응답 상태와 함께 전송 3 POST 요청 404)

당신의 HTML이 잘되어 있는지 확인하고`비동기 설정 내 바이올린

+0

각 함수가 모든 자식을 반복하는 것을 보여주는 경고 문을 얻을 수도있었습니다. 문제는 php 함수가 호출되지 않았다는 것입니다. 내가 바이올린을 테스트했을 때, 나는 PHP가 호출되었음을 확인하는 응답을받지 못했습니다. – user823527

+0

PHP 함수에서 응답을 3 번 호출했는지 확인할 수 있었습니까? – user823527

+0

@ user823527 : 바이올린은 PHP를 지원하지 않기 때문에. 귀하의 경우에는 JS에없는 PHP에서 문제가 발생했습니다 – genesis

0

여러 AJAX 요청을하는 대신 데이터를 배열에 추가 한 다음 개체 배열 전체를 보내는 것이 좋습니다.

은 (기본적으로 당신이 데이터를 사용하고있는 문자 객체가 대신 요청에 사용되는 배열에 추가 할 것이며, 각이 완료되면 다음, 당신은 데이터로 배열을 보낼 것입니다.)

+0

나는 그것을 생각했다. 나는 왜 아약스 전화가 한 번만 만들어 졌는지 궁금했다. 배열이 어떻게 작동하는지 보겠습니다. – user823527