2013-02-21 2 views
1

가능한 한 광범위하게 만들려고 노력합니다 (저는 AJAX를 사용하는 데 상당히 익숙합니다). 그러나 나는 빗나갑니다. 현재여러 Ajax 함수를 호출하는 jQuery 함수; 처음 AJAX 만 작동합니다.

, I는 다른 기능을 호출하는 기능을 갖는다 - 등 getContents() getWeather을 (통화) getMovies(), 상기은 getXxxx 각각에서

()를 함수이므로, Ajax 호출가 일부 PHP 물건에 - 그럼 내가 데이터를 통해 가서 필요한 걸릴 기능 - 모든 벌금과 멋쟁이.

그러나 getWeather() 만 실행되므로 다음 함수는 호출되지 않습니다. 아래는 관련 코드 일부의 스 니펫입니다. 문제는 AJAX를 분리하는 것으로 생각되지만 확신 할 수는 없으며 검색을 통해 관련성이있는 내용이 제공되지 않습니다.

나는 하나의 함수에서 쓸모없는 것을 수행하려고 노력했다. 첫 번째 AJAX 함수가 작동하고 다른 함수는 결코 해고되지 않는다. getmovies과 동일

function getContent(zipcode){ 
    getWeather(zipcode); 
    getMovies(zipcode); 
    getPlaces(zipcode); 
    getMorePlaces(zipcode); 
} 

function getWeather(zipcode){ 
    $.ajax({ 
     url: '/dshbrd/php/weather.php', 
     data: "zip_code=" + zipcode, 
     dataType: "xml", 
     type: 'POST', 
     async: 'false', 
     success: parseWeatherXml 
    }); 
} 

등 parseMoviesXml, 동일합니다.

function parseWeatherXml(xml){ 
    $(xml).find("channel").each(function(){ 
     /*do stuff*/ 
    }); 
} 

나는 이것이 '초보자'질문 더 많거나 적은을 실감, 내가 잘못된 단어를 사용하고있는 경우 내 사과는/실제로 충분히 열심히 검색하지 않았다. 재미있는 점은 모든 PHP 파일이 네트워크에서 (적어도 Chrome에서는) 실행되고 관련 데이터가 반환된다는 것입니다. 문제는 내 성공이 평가받지 못하는 것 같습니다. 글쎄, 내 첫 번째 성공은 어쨌든이다.

편집 : 또한 이것은 '최종적인'코드가 아닙니다. 결국에는 한 번의 호출로 모든 것을 수행 할 계획이지만,이 버그는 분명이 프로토 타입 단계에서 당혹 스럽습니다.

답변

0

Ajax 요청은 고맙게도 그들은 이연 객체를 확장하는 개체를 반환, asyncronous, 그래서 같은 것을 사용 : 당신이 사용할 수 있도록, 각 getX 기능은 아약스 요청의 결과를 반환

function getWeather(zipcode){ 
    return $.ajax({ 
     url: '/dshbrd/php/weather.php', 
     data: "zip_code=" + zipcode, 
     dataType: "xml", 
     type: 'POST', 
     async: 'false', 
     success: parseWeatherXml 
    }); 
} 

function getContent(zipcode){ 
    getWeather(zipcode).done(function() { 
     getMovies(zipcode).done(function() { 
      getPlaces(zipcode).done(function() { 
       getMorePlaces(zipcode) 
      }); 
     }); 
    }); 
} 

주 Deferred 객체의 .done

+0

아, 그 말이 합리적입니다. 나는 기다려야한다는 느낌이 들었다. 감사! – eric