1

ポート 8080 で実行されている tomcat と単純なサーブレットを取得しました。

import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;

public class MyHelloWorld extends HttpServlet {

    public void doGet(HttpServletRequest request, 
            HttpServletResponse response)
    throws IOException, ServletException
    {
        String data = "Hello World from servlet!";
        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(data);
    }
}

このサーブレットへの URL で wget を実行し、文字列を取得します。

"Hello World from servlet!"

また、Webブラウザもそれを印刷するので機能し、Tomcatのアクセスログには応答「200」が表示されます

しかし、私のjavascriptを介してこの文字列を取得しようとすると:

<html>

<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>


            $.getJSON({ 
    type: "GET", url: "http://localhost:8080/examples/MyHelloWorld", 
    contentType: "text/plain", 
    error: function(xhr, ajaxOptions, thrownError){ 
                alert(ajaxOptions);
                alert(xhr.status); 
                alert(thrownError);
            }, 
    processData: true, 
    success: function(data, textStatus, jqXHR){ alert(data); }
});
</script>

</script>

</head>

tomcat のログに応答 200 が表示されますが、ブラウザには何も表示されません。コンテンツのない空白のページです。に変更getJSONした場合、getまたはajax次のアラートを受け取った場合:

xhr.status = 0
ajaxOptions = "error"
thrownError = empty

Web サーバーは Apache で、ポート 80 で実行されます

すべての助けのためのThx

4

4 に答える 4

2

次のようなものを試してください。

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    String data = "Hello World from servlet!";
    response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");

    if (request.getContentType().equals("application/json")) {
        data = "\"" + data + "\"";
    }

    response.getWriter().write(data);
}

そしてあなたのjsで:

$.getJSON("http://localhost:8080/examples/MyHelloWorld", function(data) {
   alert(data)
})
于 2012-08-06T14:58:06.107 に答える
0

出力:

"Hello World from servlet!"

これはJSONオブジェクトではなく文字列であり、jsonlint.comを介して実行します。出力は次のようになります。

{ "data" : "Hello World from servlet!" }

適切なコンテンツ タイプ「application/json」が設定されています。

プレーン テキスト文字列を取得するだけの場合は、$.get()を使用します。

于 2012-08-06T14:43:40.343 に答える
0

また、クロムの下の私のJavaスクリプトコンソールは次のように言っています:

GET http://10.10.1.19/[object%20Object] 404 (Not Found) jquery-latest.min.js:4
f.support.ajax.f.ajaxTransport.send jquery-latest.min.js:4
f.extend.ajax jquery-latest.min.js:4
f.each.f.(anonymous function) jquery-latest.min.js:4
f.extend.getJSON jquery-latest.min.js:4
(anonymous function)
于 2012-08-06T15:17:13.177 に答える
0

書き方はこんな感じで、

 String data = "{\"message\":\"Hello World from servlet!\"}";

そしてJS doでは、

alert(data.message);
于 2012-08-06T14:48:31.460 に答える