我有以下代码,显示2条警报:
function GetDepartment(){
var dept;
$.ajax({
type: 'POST',
url: 'return_string.asmx/GetDepartment',
data: '{}',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function( department ) {
if( department.d[0] ) {
dept = department.d[0].code;
alert( dept );
} else {
alert ( "null" );
}
},
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message) ;
}
});
return dept;
}
alert( GetDepartment() );
第一个警报显示
undefined
,第二个警报显示MKTG
为什么第一个警报显示
undefined
?如何同时显示MKTG
? 最佳答案
仅当您的AJAX调用是同步的时,它才会按照您希望的方式工作。为此,您可以在AJAX调用中指定async: false
。
$.ajax({
type: 'POST',
url: 'return_string.asmx/GetDepartment',
...
async: false, /* new */
...
});
更好的是,重组应用程序,以便AJAX调用可以异步进行而不会阻塞UI线程,并且可以发出回调以继续执行您特定于应用程序的过程。
即。就像是:
$.ajax({
type: 'POST',
url: 'return_string.asmx/GetDepartment',
...
success: yourCallbackFunction,
...
});
// callback
function yourCallbackFunction(data) {
// do stuff that depends on data
}
关于javascript - 无法从函数返回字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13140049/