6

http://localhost:2323jQuery で $.Ajax が機能しない場合にサーバーから json を取得する方法。json は生成された幅の Java クラスです。

public class Main {
    public static void main(String[] arr) {
        new Main().start();
    }
    protected void start() {
        for (;;) {
            try {
                Socket remote = new ServerSocket(2323).accept();//port number
                BufferedReader in = new BufferedReader(new InputStreamReader(
                        remote.getInputStream()));
                PrintWriter out = new PrintWriter(remote.getOutputStream());
                String str = ".";
                while (!str.equals(""))
                    str = in.readLine();
                out.println("HTTP/1.0 200 OK");
                out.println("Content-Type: text/html");
                out.println("Server: Bot");
                out.println("");
                out.print("{\"a\":\"A\",\"b\":\"asdf\",\"c\":\"J\"}");
                out.flush();
                remote.close();
            } catch (Exception e) {
                System.out.println("Error: " + e);
            }
        }
    }
}

{"a":"A","b":"asdf","c":"J"} を出力します。そしてjqueryスクリプトは

$(document).ready(function() {
    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: 'http://localhost:2323',//the problem is here
        async: false,
        data: {},
        success: function(data) {
            alert(data.a+' '+data.b+' '+data.c);
        }
    });
});

url がhttp://localhostの場合は機能しますが、:portnumber を追加すると機能しません。url:portnumber から読み取るには?

ありがとう

4

1 に答える 1

5

同一オリジン ポリシー( http://en.wikipedia.org/wiki/Same_origin_policy )により、ajax 呼び出しでポートを指定しても機能しません。つまり、URL には、スクリプトがホストされているサーバーと同じドメインとポートが必要です。

また、この質問はすでに尋ねられており、Google で検索したときの最初の結果の 1 つであることに注意してください - Is it possible to specify a port in a ajax call

于 2013-05-03T13:37:18.977 に答える