我试图通过跨域从ajax调用获取数据。 这是代码
function GetMaxWULen() {
var x;
$.ajax({
url : url,
method : 'POST',
jsonp : "callback",
async : false,
data : {
Function : "GetMaxWULen",
Authorization : Base64.encode(login + ":" + token),
WuType : $("#ddlWUType").val()
},
dataType : 'jsonp',
crossDomain : true,
error : function(request, status, error) {
alert('nie udało sie');
alert(error);
}
}).done(function(result) {
console.log('done result');
x = result;
console.log(x);
});
console.log('function end');
console.log(x);}
在函数结束时,x变量未定义,但在完成事件中值是正确的。 任何人都可以帮助我或告诉我这个代码有什么问题吗?
答案 0 :(得分:3)
这是因为您的AJAX请求是异步完成的。这意味着您的其余代码将不会等待您的响应准备好继续。
如果需要在函数外部使用从AJAX返回的数据,则可能需要在响应准备好时创建一个参数作为回调。例如:
function yourFunction(callback) {
$.ajax({
/* your options here */
}).done(function(result) {
/* do something with the result here */
callback(result); // invokes the callback function passed as parameter
});
}
然后叫它:
yourFunction(function(result) {
console.log('Result: ', result);
});
答案 1 :(得分:-2)
试
$.ajax({
url : url,
method : 'POST',
jsonp : "callback",
async : false,
data : {
Function : "GetMaxWULen",
Authorization : Base64.encode(login + ":" + token),
WuType : $("#ddlWUType").val()
},
dataType : 'jsonp',
crossDomain : true,
error : function(request, status, error) {
alert('nie udało sie');
alert(error);
}
}).success(function(result) {
var datareturned = result.d;
console.log('done' + datareturned);
x = datareturned;
console.log(x);
});