jquery 使用return返回空值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery 使用return返回空值相关的知识,希望对你有一定的参考价值。

如图,图1:ajax使用alert直接把返回值弹出来,成功图2:deom.php中的代码图3:弹出成功图4:使用return,失败图5:弹出值是空的 请问怎么改啊,我不想获取到值就直接弹出来,我想保存到一个值里面

参考技术A

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,那里有优雅的解法。

参考技术B

默认的$.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 

本回答被提问者采纳
参考技术C 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的 延迟对象

以上是关于jquery 使用return返回空值的主要内容,如果未能解决你的问题,请参考以下文章

为啥`return a or b`是Ruby中的空值表达式错误?

jquery 的 each 方法中 return 的坑

js中return的用法

jquery中ajax用return来返回值无效

jQuery问题:$(function() return true )返回值?

jQuery清除数组中的空值