3***@qq.com
3***@qq.com
  • 发布:2017-11-09 14:45
  • 更新:2017-11-14 11:24
  • 阅读:1505

不能获取ajax的值

分类:MUI

function sqlhelper(datas)
{
var msgjson=null;
mui.ajax({
url : 'http://192.168.30.123:32100/login.aspx',
data : datas,
dataType: 'json',
type : 'get',
timeout : 10000,
async : false,
success : function(msg){

                                    alert(JSON.stringify(msg));   
                                    msgjson=msg;  

                        },  
                        error   :   function(xhr,type,errorThrown)  
                                    {  

                                        return null;  
                                    }  
                        });  

    return msgjson;  

}

success里是能够获取msg数值的,但将msg赋值给msgjson后,整个函数的返回值就是null,请问如何调整

2017-11-09 14:45 负责人:无 分享
已邀请:
p***@126.com

p***@126.com

msgjson = JSON.stringify(msg);

  • 3***@qq.com (作者)

    最后的 return msgjson 这个msgjson 是null

    2017-11-09 14:57

  • p***@126.com

    msgjson定义全局变量,msgjson=JSON.stringify(msg);试试

    2017-11-09 15:03

  • 3***@qq.com (作者)

    msgjson 已经放在ajax之前定义了

    2017-11-09 15:10

朋也

朋也 - https://tomoya92.github.io

function a(callback) {  
  $.ajax({  
    //...  
    success: function(data){  
      callback(data)  
    }  
  })  
}  

//调用  

a(function(data){  
  console.log(data);  
})
朋也

朋也 - https://tomoya92.github.io

ajax还没有执行完,程序就已经走到return msgjson了,所以它是null

另外,js里不要用return来拿到程序执行完后返回的值,这样往往是拿不到的

可以使用回调来获取执行完的结果

1***@163.com

1***@163.com

在没有设置async=false时,async默认值为true,所以ajax默认为异步。success方法还未执行完毕的时候你就已经return了。解决方法有两种,一:加上async=false,二:不要返回值,将msgjson在success方法中输出。

全敏

全敏 - qm

ajax请求设置为同步,之前遇到过类似问题。async=false 就可以了

青城将至

青城将至 - 能写一天是一天

用jq吧,mui的ajax好像有点问题

该问题目前已经被锁定, 无法添加新回复