0

私が書いたJavaレストサーバーを呼び出すときに、いくつかのajaxの問題があります(そしてajaxには慣れていませんが、かなりの検索を行いました)。(Jetty を使用して) Rest サーバー内で実行されているテスト html ページがあり、次の呼び出しを使用します。

        $('#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 は次のとおりです。

{"user":[],"lake":[{"oid":"519b9a1a3004f8fa1287502a","type":"Lake","handle":"nightstalker","viewedhandle":"","viewedlaketag":" TXFORK","閲覧ユーザー名":"","タイムスタンプ":1369152026668}]}

この呼び出しは Rest Api を実行し、期待どおりに JSON を取得します... MAMP で実行されている HTML/PHP アプリケーションから同じ Rest Api を呼び出そうとすると、アウトバウンド呼び出しで ajax 呼び出しが機能します。 Java Rest サーバーにアクセスして呼び出しを確認すると、設計どおりに実行され、JSON が作成されて送信されます。問題は、ajax 呼び出しで成功関数への呼び出しが得られないことです (いずれかのエラー関数が呼び出されていません)。

    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」だけのdataTypeも試しました。

前もって感謝します。

=====

はい、contentType を変更しましたが、それは問題ではありませんでした。

4

1 に答える 1

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');
        }
    });

alert で syntex エラーdata = JSON.parse(data)または「hello there」が表示される場合は、エンコードの問題です。この場合、使用する必要がありますresponse.setCharacterEncoding("UTF8")

于 2013-05-22T18:20:30.073 に答える