无法从函数返回字符串

时间:2012-10-30 13:27:37

标签: javascript jquery

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

1 个答案:

答案 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
}