jquery 使用return返回空值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery 使用return返回空值相关的知识,希望对你有一定的参考价值。
如图,图1:ajax使用alert直接把返回值弹出来,成功图2:deom.php中的代码图3:弹出成功图4:使用return,失败图5:弹出值是空的 请问怎么改啊,我不想获取到值就直接弹出来,我想保存到一个值里面
参考技术AGetData没有返回值,你写的那个匿名函数是参数,return Data 是匿名函数的return,并不是GetData的return,你基础太差,我不太好回答。还有 undefined 并不是 null 它可以理解为无法表述的值,逻辑上也有问题,你没获取到值怎么可以直接用 alert 弹出来。正文来了。要实现你的想法需要一个回调函数。
function callBack(DATA)var D = DATA;//保存到一个值里面0.0 !!
alert( D );//正确写法
return D;//这只是为了更好的说明下面的错误
function GetData(G_Name,G_Type)
$.post( "./database/deom.php", Name:G_Name,Type:G_Type , function(Data)
callBack(Data);
)
alert( callBack() );//错误!,post请求是异步操作会导致上下文问题。
是不是有一种脱裤子放屁的感觉0.0。有兴趣去了解 ECMAScript 6,那里有优雅的解法。
默认的$.post, $.get 是异步请求,也就是说,不会等你请求结果,就return了,所以是空值。。
解决方法,用$.ajax
function getData()var d;
$.ajax(
type:"POST",
async:false, // 不使用异步请求
url:"",
data:,
success: function(data)
d = data
return d;
);
或者直接设置
再$.post
var d = $.Deferred();
$.post(*.database.....),
.....
.... //此处省略你那些代码, 是的 我就是这么懒。 下面直接callback
function(Data)
d.resolve(Data);
return d;
getData().done(function(Data)
alert(Data);
);
为什么会alert出undefined, 你跟断点就会发现 是先走的return再走的ajax的callback.
你可以查查jquery api的 延迟对象
以上是关于jquery 使用return返回空值的主要内容,如果未能解决你的问题,请参考以下文章
为啥`return a or b`是Ruby中的空值表达式错误?