jquery 使用return返回空值
发布网友
发布时间:2022-05-10 13:32
我来回答
共3个回答
热心网友
时间:2022-04-22 12:12
GetData没有返回值,你写的那个匿名函数是参数,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,那里有优雅的解法。
热心网友
时间:2022-04-22 13:30
默认的$.post, $.get 是异步请求,也就是说,不会等你请求结果,就return了,所以是空值。。
解决方法,用$.ajax
function getData() {
var d;
$.ajax({
type:"POST",
async:false, // 不使用异步请求
url:"",
data:{},
success: function(data){
d = data
}
}
return d;
});
或者直接设置
$.ajaxSetup({ async : false });
再$.post
热心网友
时间:2022-04-22 15:04
function getData(s_name,g_type){
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的 延迟对象