2

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

4

1 回答 1

8

只有当您的 AJAX 调用是同步的时,它才会按照您希望的方式工作。为此,您可以async: false在 AJAX 调用中指定。

$.ajax({
    type: 'POST',
    url: 'return_string.asmx/GetDepartment',
    ...
    async: false, /* new */
    ...
});

更好的是,重构您的应用程序,以便 AJAX 调用可以异步进行而不会阻塞 UI 线程,并且可以发出回调以继续您的应用程序特定进程。

IE。就像是:

$.ajax({
    type: 'POST',
    url: 'return_string.asmx/GetDepartment',
    ...
    success: yourCallbackFunction,
    ...
});

// callback
function yourCallbackFunction(data) {
    // do stuff that depends on data
} 
于 2012-10-30T13:28:48.953 回答