如何从使用ajax的javascript函数中获取值

时间:2013-03-13 09:08:44

标签: php javascript jquery ajax

我正在调用一个使用ajax获取值的函数如何将此值返回给调用函数:
我使用ajax调用的函数是:

function getStatusOfAdv(advID){
   $.ajax({
      url:baseURL+"/admin/advertisers/get.adv.status.php",
      data:"param="+escape(advID),
      dataType:"html",
      cache:"false",
      success:function(result){
         return result;
      }
   });
}

我必须将此结果值返回给调用函数,即:

function setAdvDetail(advID){
var status = getStatusOfAdv(advID);
alert(status);
}

4 个答案:

答案 0 :(得分:2)

$.ajaxasync调用,getStatusOfAdv函数将在成功之前返回,您可以从成功调用函数并将结果传递给它。

function getStatusOfAdv(advID){
   $.ajax({
      url:baseURL+"/admin/advertisers/get.adv.status.php",
      data:"param="+escape(advID),
      dataType:"html",
      cache:"false",
      success:function(result){
         callYourFunction(result);
      }
   });
}

function callYourFunction(result)
{

}

答案 1 :(得分:1)

$.ajax()调用是异步的,因此在{ajax调用完成之前getStatusOfAdv()返回。因此,您必须重新构建代码,以便使用异步函数结果的所有代码都在ajax成功处理程序中或从该处理程序调用。

你不能创建像getStatusOfAdv()这样的同步函数,在其中使用异步调用,然后在getStatusOfAdv()返回时返回值。无法完成,因为getStatusOfAdv()在异步ajax调用完成之前很久就会返回,因此返回值在返回时尚不知道。

javascript中的典型设计模式是在异步操作完成且数据可用时调用的回调函数中完成需要答案的工作:

function getStatusOfAdv(advID, fn){
   $.ajax({
      url:baseURL+"/admin/advertisers/get.adv.status.php",
      data:"param="+escape(advID),
      dataType:"html",
      cache:"false",
      success:function(result){
         fn(result);
      }
   });
}

function setAdvDetail(advID){
    getStatusOfAdv(advID, function(status) {
        alert(status);
        // any other code that uses the status goes here
    });
    // the status is NOT known here because the asynch function has
    // not yet completed
}

答案 2 :(得分:0)

试试这个

    function getStatusOfAdv(advID){
   $.ajax({
      url:baseURL+"/admin/advertisers/get.adv.status.php",
      data:"param="+escape(advID),
      dataType:"html",
      cache:"false",
      success:function(result){
         alert(result);
      }
   });
}

毕竟这是你在ajax函数调用之后所做的事情

答案 3 :(得分:0)

你可以将异步设为假..

function getStatusOfAdv(advID){
var Result;
$.ajax({
  url:baseURL+"/admin/advertisers/get.adv.status.php",
  data:"param="+escape(advID),
  dataType:"html",
  cache:"false",
  async:"false"
  success:function(result){

     Result=result;
  }
});
return Result;
}

但是将异步设为假并不是一种好习惯。