我会尝试尽可能广泛地使用它(我对使用AJAX很新)但我离题了。
目前,我有一个调用不同函数的函数 - 所以,getContents()调用getWeather(),getMovies()等。
在每个所述的getXXXX()函数中,都有一个对某些php的AJAX调用 - 然后我使用一个函数来查看数据并获取我需要的东西 - 一切都很好和花花公子。
但是,只有getWeather()执行 - 永远不会调用以下函数。下面是一些相关代码的片段,我相信问题在于分离AJAX,但我无法确定,搜索没有为我提供任何过于相关的内容。
我尝试在一个函数中执行我需要的功能但无济于事 - 如果我按顺序玩第一个AJAX函数并且其他函数永远不会被激活。
function getContent(zipcode){
getWeather(zipcode);
getMovies(zipcode);
getPlaces(zipcode);
getMorePlaces(zipcode);
}
与getmovies等相同
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中)并且他们正在返回相关数据 - 问题似乎或多或少涉及我的成功未被评估。好吧,无论如何,我的第一个成功是。
编辑: 我还应该提一下,这绝不是“最终”代码 - 我最终计划用一个调用等来做所有事情,但是这个bug在这个原型阶段肯定让我感到困惑。
答案 0 :(得分:0)
Ajax请求是异步的,幸好他们返回一个扩展Deferred对象的对象,所以使用类似的东西:
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)
});
});
});
}
请注意,每个getX函数都会返回ajax请求的结果,以便您可以使用Deferred对象的.done。