jQuery .ajax调用从不调用方法

时间:2014-03-19 17:22:24

标签: javascript jquery ajax wcf

在这个SO post中,我学会了如何从AJAX调用中获取返回值:

function CallIsDataReady(input) {
            $.ajax({
                url: "http://www.blah.com/services/TestsService.svc/IsDataReady",
                type: "GET",
                contentType: "application/json; charset=utf-8",
                data: input,
                dataType: "json",
                success: function (data) {
                    if (!data) {
                        setTimeout(function (inputInner) { CallIsDataReady(inputInner); }, 1000);
                    }
                    else {
                        //Continue as data is ready
                        callUpdateGrid(input);
                    }
                }
            });
        }

        $(document).ready(function () {
            var input = { requestGUID: "<%=guid %>" };

            CallIsDataReady(input);

        });

此函数调用其Web服务,确实返回true。问题是在以下callUpdateGrid中,日志记录显示没有从$ .ajax调用调用该Web服务方法:

function callUpdateGrid(input) {
    console.log(input);
    $.ajax({
        url: "http://www.blah.com/services/TestsService.svc/GetContactsDataAndCountbyGUID",
        type: "GET",
        contentType: "application/json; charset=utf-8",
        data: input,
        dataType: "json",
        success: function (data) {
            var mtv = $find("<%= RadGrid1.ClientID %>").get_masterTableView();
                        console.log(data);
                        mtv.set_dataSource(data.d.Data);
                        mtv.dataBind();
                    }
    });
}

任何人都知道出了什么问题?

1 个答案:

答案 0 :(得分:1)

总是总是将错误处理函数包含为传递给$ .ajax的选项之一。例如,在成功函数之后添加此代码:

    ,
    error: function(jqXHR, textStatus, errThrown) {
        console.log("AJAX call failed");
        console.log(errThrown);
    }

如果$ .ajax调用不成功,那将至少记录一些信息。

修改 根据你的评论,这个日志 SyntaxError: Invalid character

事实上,我现在看到你提供了一个普通的JavaScript对象作为传递给$ .ajax的data选项,但指出它是dataType字段中的JSON对象。您需要自己将输入对象实际转换为JSON,如下所示:

    data: JSON.stringify(input),
    dataType: 'json',

或者,您可以先将input格式化为JSON对象,如下所示:

var input = { "requestGUID": "<%=guid %>" };

在这种情况下,字段名称requestGUID周围的引号足以为您提供JSON对象。