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

我正在调用一个函数,它使用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); } 

$.ajax()调用是异步的,因此getStatusOfAdv()在ajax调用完成之前返回。 因此,您必须重新构建代码,以便使用异步函数结果的所有代码都在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 } 

$.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) { } 

试试这个

  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函数调用之后所做的事情

你可以异步到假..

尝试

 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; } 

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