我有以下代码,显示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
?
答案 0 :(得分:8)
只有当您的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
}