基本上我想拥有一个从$.post()调用中检索值的参数,如下所示:
init = function(){
var lastpage = getLastPage();
}
function getLastPage(){
$.post("getInfo.PHP",{
last: "yes"
},function(data){
setLast(data.last);
},'json');
return function setLast(data){
return data;
}
}
@H_301_7@
因此,当到达最后一个帖子(最后一页)时,我应该检查lastpage变量,该变量具有从getLastPage()函数返回的值.
我对javascript指针和所有内容都感到迷惑.请帮助大家.
更新(20/4/2010):
我已经做了另一种方法,像这样:
init = function(){
getLastPage();
if((page+1) == $("#lastpage").val()){
alert("this is last post");
}else{
page++;
//get info and display to the page here
}
}
function getLastPage(){
$.post("getInfo.PHP",{
last: "yes"
},function(data){
$("#lastpage").val(data.last);
},'json');
}
@H_301_7@
首先运行该函数以将值临时存储在隐藏的输入标签(最后一页)中,然后每当我单击前进按钮时再次获取该值以进行检查.
如果你们都有更合适的方法,请告诉我.
最佳答案
您应该像这样更改代码:
原文链接:https://www.f2er.com/jquery/531024.html$.post("getInfo.PHP",{ last: "yes" },function(data){
functionToRunAfterYouHaveDataSometimeLater(data.last);
},'json');
@H_301_7@
总体方法的问题在于,使用AJAX,您正在处理异步操作.这意味着function(data){}部分然后不会运行,而是稍后运行,因此您的return实际上不会返回任何东西,它将是未定义的.
代替这种方法,您需要调用$.post(),然后调用依赖于此数据的任何函数以继续作为$.post()回调的一部分.完成之后,您的代码顺序如下所示:
> $.post()执行,向服务器发出请求
> $.post()运行后的其余代码
>稍后,当响应来自服务器并且您有数据时,将执行回调
>现在继续处理您需要的数据