1.先解释一下原因
由于 ajax 是异步刷新,不会对 ajax 里面执行的任务进行任何阻塞,所以如果我们直接 return data,他会在未出结果之前把值传给函数,对此有一个特别简单的方法解决
2.具体解决办法:
2.1 先在函数内定义一个全局变量
var result;
- 1
2.2 在 ajax 里面添加
async:false
表示执行完代码之后在返回结果
具体代码如下:
function test() {
var result;
$.ajax({
url: "localhost:8080....",
data: "测试",
type: "get",
async: false, //此处必须要有这句话,否则任然会传值失败
success: function(data) {
result = data;
}
});
return result;
}
$.ajax({
url: url,
data: data,
dataType: "json",
type: "post",
async: false, //异步请求处理
processData: false, // 告诉jQuery不要去处理发送的数据
contentType: false, // 告诉jQuery不要去设置Content-Type请求头
//加上这句话,允许浏览器向服务器跨域请求时携带cookie
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function(data) {
}
},
error: function(data) {}
});