将参数从$ .post()回调传递给外部变量

时间:2010-04-19 15:44:07

标签: php jquery ajax

基本上我想要保存一个从$ .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;
            }
        }

所以当到达最后一篇文章(最后一页)时,我应该检查具有从getLastPage()函数返回的值的lastpage变量。

我用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');
    }

首先运行该函数暂时将值存储在隐藏的输入标记(lastpage)中,然后再次获取该值,以便在我单击前进按钮时进行检查。

如果你们都有更合适的方式,请告诉我。

1 个答案:

答案 0 :(得分:3)

您应该像这样更改代码:

$.post("getInfo.php",{ last: "yes" },
  function(data){ 
    functionToRunAfterYouHaveDataSometimeLater(data.last); 
  }
,'json');

整体方法的问题在于使用AJAX,您正在处理异步操作。这意味着function(data) { }部分未运行,之后运行,因此您的return实际上不会返回任何内容,它将是undefined

而不是这种方法,你需要调用$.post()然后调用依赖于这些数据的任何函数作为$.post()回调的一部分继续。完成后,您的代码顺序如下所示:

  • $.post()执行,向服务器发出请求
  • $.post()运行后的其余代码
  • 稍后当响应来自服务器且您有数据时,您的回调会执行
  • 现在继续使用该数据做您需要的工作