先上代码
function getNewDate( flyNum ){
$.ajax({
url: '',
type: 'GET',
dataType: 'json',
async: true,
data: {
param1: flyNum
},
})
.done(function(res) {
var thisDate = res.data.date; //需要返回thisDate
})
.fail(function(err) {
//console.log("error");
})
.always(function() {
});
}
var mydate = getNewDate(123);
使用的jquery封装的ajax
在done中return的是done方法
请问如何才能在getNewDate函数中返回获取到的thisDate
目的只有一个,getNewDate返回thisDate,求大佬们教育教育,感觉脑子糊了
回答:
异步请使用Promise
function getNewDate(flyNum)
{
return new Promise(function(resolve,reject)
{
$.ajax(
{
url: '',
type: 'GET',
dataType: 'json',
async: true,
data:
{
param1: flyNum
},
})
.done(function(res)
{
var thisDate = res.data.date; //需要返回thisDate
resolve(thisDate);
})
.fail(function(err)
{
//console.log("error");
reject(err);
})
.always(function()
{
});
});
}
getNewDate(123).then(function(resolveData)
{
//code....
console.log('resolveData',resolveData);
},function(rejectData)
{
console.log('rejectData',rejectData);
});
回答:
需要把 ajax 设置为同步,定义一个变量把获取到的值赋值给这个变量,最后返回这个变量
function getNewDate( flyNum ){
var rst;
$.ajax({
url: '',
type: 'GET',
dataType: 'json',
async: false,
data: {
param1: flyNum
},
})
.done(function(res) {
var thisDate = res.data.date; //需要返回thisDate
rst = thisDate;
})
.fail(function(err) {
//console.log("error");
})
.always(function() {
});
return rst;
}
var mydate = getNewDate(123);
回答:
ajax是异步的,你可以在$.ajax{}内对thisDate去操作,赋值页面还是其他操作都可以,但是想要在这个作用域外去得到的话是不行的
回答:
function getNewDate( flyNum ){
var thisDate
$.ajax({
url: '',
type: 'GET',
dataType: 'json',
async: false,
data: {
param1: flyNum
},
})
.done(function(res) {
thisDate = res.data.date; //需要返回thisDate
})
.fail(function(err) {
//console.log("error");
})
.always(function() {
});
return thisDate;
}
var mydate = getNewDate(123);
把ajax异步请求改为同步请求->async: false
既然是封装方法,有返回值才会赋值给mydate
回答:
用deffer + promise
回答:
回答:
题主是不是可能遇到this指向的问题了,所以才想到在ajax请求之后把数据返回回去?ajax的回调里是可以直接处理数据的,回调函数就是干这个的。
function getNewDate( flyNum ){
var _this = this;
$.ajax({
url: '',
type: 'GET',
dataType: 'json',
async: true,
data: {
param1: flyNum
},
})
.done(function(res) {
_this.thisDate = res.data.date;
})
.fail(function(err) {
//console.log("error");
})
.always(function() {
});
}
只是一个猜测哈,不是很清楚具体什么功能需求