在下面,该return语句在调用完成 之前 被执行$.get()。我该如何更改?
return
$.get()
var aft = {}; aft.getToken = function (url) { var theToken; //Get the token value $.get(url, function (data) { theToken = $(data).find('input[name=__RequestVerificationToken]').val(); }, "html"); return theToken; };
您不能-至少不明智。虽然async可以在jQuery ajax请求上设置一个属性,但过去在尝试将其与值一起使用时遇到了 严重的问题false。
async
false
尝试重新考虑您要完成的工作:
var aft = { yourToken: '' }; aft.setToken = function (url, callback) { $.get(url, function (data) { this.yourToken = $(data).find('input[name=__RequestVerificationToken]').val(); if (callback) callback.apply(this); }, "html"); };
然后:
aft.setToken("url.php", function() { alert("Token retrieved = " + this.yourToken); });
或者,如果您的回调 仅 需要访问返回的数据,那么您可以更简单地执行
if (callback) callback(data);
然后
aft.setToken("url.php", function(dataReturned) { alert("Ajax data retrieved = " + dataReturned); });