-1

JavaScript コードから Java Web サービス メソッドを呼び出そうとしています。Web サービス メソッドは String 型を返しますが、JavaScript から呼び出すと、Chrome コンソールに次のエラーが表示されます。

キャッチされていない SyntaxError: 予期しないトークン <

Web サービスのメソッドは次のとおりです。

public String getName(){
    name="hello";
    return name;
}

(nameはクラスレベルの変数です。)

Web サービスの上記のメソッドを呼び出すために私が書いた JavaScript は次のとおりです。

<script type="text/javascript">
    function CallService() {
        $.ajax({
            type: "GET",
            url: "http://localhost:8080/TestWS/services/HelloWorld/getName",
            contentType: "application/xml; charset=utf-8",
            dataType: "jsonp text xml html",
            success: Success,
            error: Error
        });
    }

    function Success(data, status) {
        alert(data);
    }

    function Error(request, status, error) {
        alert(error);
    }
</script>

エラーについてグーグルで調べてみましたが、解決策が見つかりませんでした。

4

1 に答える 1

1

を 1 つだけ指定してくださいdataType。現在、考えられるすべてのタイプをリストしているようです。また、 を指定contentType: "application/xml; charset=utf-8"しましたが、リクエストでデータを送信していません。最後に、制限に違反する可能性のある絶対URLを指定しました (クロスドメインAjaxリクエストsame origin policyを送信することはできません)。

したがって、これらの意見を考慮した後、次のことを試してください。

<script type="text/javascript">
    function CallService() {
        $.ajax({
            type: "GET",
            url: "/TestWS/services/HelloWorld/getName",
            success: Success,
            error: Error
        });
    }

    function Success(data, status) {
        alert(data);
    }

    function Error(request, status, error) {
        alert(error);
    }
</script>

これは明らかに、利用しようとしている Web サービスが、JavaScript コードをホストしているページと同じドメインでホストされていることを前提としています。

そうでない場合は、JSONPの使用を検討できますが、これを機能させるには、Web サービスを変更してサポートする必要があります。

于 2013-07-07T14:56:13.550 に答える