我正在调用一个函数,它使用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 }
$.ajax
是async
调用,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; }
但是将异步设为假并不是一个好习惯。
需要了解更多jQuery教程分享如何从使用ajax的javascript函数中获取值,都可以关注jQuery技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是jQuery教程分享如何从使用ajax的javascript函数中获取值相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/jquerytutorial/981792.html