无法从函数返回字符串

无法从函数返回字符串

我有以下代码,显示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/

10-12 00:01