2014-09-15 6 views
0

내 문제를 해결할 수 있습니까? 나는 다른 spicialization에있는 의사의 목록을 반환합니다 기능을 만들고 싶습니다. 이것은 내 코드 문제는이 코드는 의사 doctorlist 반환 emtpy 값입니다. 내 코드가 잘못된거야. 내 문제를 해결하도록 도와주세요.아약스에서 값을 반환하는 javascript 함수

$(document).ready(function() { 

    $("#loaders").append("<center><img src='images/ajax-loader.gif'></center>"); 
    doctorSpecialty(); 

}); 

function doctorSpecialty(){ 

    $.ajax({ 
     url: "http://localhost:8080/m-help/apps/json_special.php", 
     dataType: 'json', 
     async: true, 
     success: function(data) { 
     $("#list").empty(); 
     $.each(data.result, function(){ 
      var specialty = doctorList(this['specialization']); 

      $("#list").append("<li><a href='doctor-special.html?special=" +this['specialization']+ "' style='padding-left:10px'>" +this['specialization']+ ""+specialty+"</a></li>"); 
      $("#loaders").fadeOut("fast"); 
      }); 
     } 
    }); 
} 

function doctorList(e){ 

    var specials = e; 
    var retSpecial = ""; 
    $.ajax({ 
     url: "http://localhost:8080/m-help/apps/json_special-doctor.php?s="+specials, 
     dataType: 'json', 
     async: true, 
     success: function(data) { 
      $.each(data.result, function(){ 
      retSpecial = this['docFname']; 
      }); 
     } 
    }); 
    return retSpecial; 
} 

누구든지이 코드를 수정 해주세요.

+0

첫 번째 비동기 호출에서 반환 된 각 결과에 대해 두 번째 비동기 호출을 만드는 것은 약간 중복되고 비효율적입니다. 필요한 모든 데이터를 반환하는 호출을 하나만 가지면 어떨까요? 또한 $ .each() 유틸리티 함수에는 매개 변수가있는 콜백이 필요합니다. 당신은 아마 당신이 기대하지 않는 의미를 가지고있는 'this'에 접근하려하고 있습니다. – DvS

+0

나는 아약스와 자바 스크립트로 새로운 사람입니다. 어떻게하면 할 수 있겠습니까? – PPjyran

+0

코드를 고칠 수 있습니까? – PPjyran

답변

0

두 번째 호출은 루프가 계속 진행되고 아직 도착하지 않은 응답을 사용하기 때문에 async = true가 될 수 없습니다.

당신은 두 번째 비동기해야한다 : 전문화를 입력 할 두 번째 통화에

또는

사용 약속 거짓을하고 첫 번째 아약스 호출에서 DOM 조작을 취소해야합니다.

+0

어떻게 할 수 있습니까? – PPjyran

+0

Jquery 사이트를 참조하십시오 : http://api.jquery.com/jquery.ajax/ // 요청을 한 직후 핸들러를 할당하십시오. //이 요청에 대한 jqXHR 객체를 기억하십시오. var jqxhr = $ .ajax ("example.php") 되는 .done (함수() { 경보 ("성공");} ) .fail (함수() { 경보 ("오류");} ) .always (함수() { 경고 ("완료"); }); //은 ({) 경고 ("초 완료"; 을} 기능()) ... // jqxhr.always 위의 요청에 대한 또 다른 완성 기능을 설정 여기에 다른 작업을 수행; – Scription

+0

거기에 할 수있는 방법이 있습니까? – PPjyran

관련 문제