如果函数返回jQuery AJAX输出作为返回

时间:2011-06-06 05:59:04

标签: jquery javascript

我通过jQuery AJAX调用了web服务。 web服务返回'True'作为输出。
我想返回函数返回。但它返回undefined。
问题的根源在哪里?
函数IsAuthenticated返回undefined但是response.d包含'True'值(其字符串)。

   function IsAuthenticated() {
        //Todo Check If user logined or not from server
       return CallWebService("Server/WebServices/Server.asmx/IsUserLogined", '{}');
    }
    function CallWebService(WebServicePath, parameters) {
        $.ajax({
            type: "POST",
            url: WebServicePath,
            data: parameters,
            async: false,

            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                alert(response.d);
                if (response.d == 'True') {

                    return true;
                }
                else
                { return false; }
            },
            failure: function (msg) {

                alert("error");

            }
        });

1 个答案:

答案 0 :(得分:3)

我看到你正在使用async:false选项使ajax调用同步。

但是,success函数仍然是一个回调函数,并且成功处理程序返回true将不会因ajax函数调用而返回值。

您需要将输出捕获到局部变量中并将其返回。

试试这个:

function CallWebService(WebServicePath, parameters) {
    var retValue = null;
        $.ajax({
            type: "POST",
            url: WebServicePath,
            data: parameters,
            async: false,

            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                alert(response.d);
                if (response.d == 'True') {
                      retValue = true;
                }
                else
                {  retValue =  false; }
            },
            failure: function (msg) {
                alert("error");
            }
        });
        return retValue;
}