Ajax调用Rest服务未成功调用ajax中的success函数

时间:2013-05-21 16:03:16

标签: java javascript ajax json rest

在调用我编写的java rest服务器时,我遇到了一些ajax困难(并且对ajax很新,但是做了一些搜索)。我在Rest服务器中运行了一个测试html页面(使用Jetty),我使用以下调用 - 使用.get成功运行:

        $('#getRVLakeForm').submit(function(e) {
            var handle = $('#insertRVLakeHandle').val();
            var lakekey = $('#RVLakeKey').val();
            var temp = $('#RVLakeTemp').val();
            var speed = $('#RVLakeWindspeed').val();
            var degrees = $('#RVLakeWindDegrees').val();;
            $.get('${pageContext.request.contextPath}/api/recent/lake/' + handle + "/" + temp + "/" +  speed + "/" + degrees + "/" + lakekey, function(data) {
                alert(data.lake[0].oid);

                $('#RMLakeResponse').text("back");
            });

这是Rest服务器返回的JSON:

{ “用户”:[], “湖”:[{ “OID”: “519b9a1a3004f8fa1287502a”, “类型”: “湖”, “手柄”: “夜行”, “viewedhandle”: “”,“viewedlaketag “:” TXFORK”, “viewedusername”: “”, “时间戳”:1369152026668}]}

此调用执行Rest Api并按预期返回JSON ...当我尝试从HTML / PHP应用程序调用相同的Rest Api时,在MAMP下运行 - ajax调用在out绑定调用上工作 - 我可以调试Java Rest服务器并查看调用进来,并按设计执行创建JSON以发送出去。问题是我从未在ajax调用中调用success函数(我没有看到调用的错误函数)。

    urlrecent = "http://localhost:8080/server/api/recent/lake/" + handle + "/" + temp + "/" +  speed + "/" + degrees + "/" + lakekey;

    $.ajax({
        type: "GET",
        contentType: "application/json",
        dataType: "jsonp",
        url: urlrecent,
        success: function (data) {
            alert("hello there!");
            alert(data)
        },
        error: function () {
            alert('failed');
        }
    });

我甚至尝试过getJSON而不是运气。与此同时,我将继续搜索Stack和Web以寻找可行的方法。我也试过了一个只是“json”的数据类型。

提前致谢。

=====

是的,使用了contentType,但这没关系。

1 个答案:

答案 0 :(得分:0)

在IE8中试用并设置dataType: "html"

urlrecent = "http://localhost:8080/server/api/recent/lake/" + handle + "/" + temp + "/" +  speed + "/" + degrees + "/" + lakekey;

    $.ajax({
        type: "GET",
        contentType: "application/json",
        dataType: "html",
        url: urlrecent,
        success: function (data) {
            alert("hello there!");
            data = JSON.parse(data);
            alert(data)
        },
        error: function () {
            alert('failed');
        }
    });

如果在data = JSON.parse(data)或警告中出现“hello there”时出现语法错误,则表示编码问题。在这种情况下,您应该使用response.setCharacterEncoding("UTF8")