1

初めてajaxとノードjsを使用しています。クライアントを使用してノード js から応答を取得すると、エラー関数に入ります。一方、ブラウザから url を直接呼び出すと、サーバーから正しい応答が得られます。これは、クライアント側の ajax リクエストに問題があることを示しています。

これは私のクライアントコードです:

function fetch() {
    $.ajax({
    type: 'POST',
    url: "http://127.0.0.1:8888",
    data: {data : 'India'},
    dataType: 'json',
    success: function () {
        alert("hi");
        //var ret = jQuery.parseJSON(data);
        //$('#q').html(ret.msg);
    },
    error: function (jqXHR, textStatus, error) {
        console.log('Error: ' + error.message);

        alert("ERROR");
    }

});

これはサーバーの node.js コード (その一部) です。console.log msg は正しい値を取得します。

http.createServer(function(req, response) {  
    console.log("Request received");
    response.writeHeader(200, {"Content-Type": "application/json"}); 
    req.on('data', function (chunk) {
        console.log(chunk.toString('utf8'));
        console.log(result[0].name);

    });     
    response.end(JSON.stringify({data:result}));
}).listen(8888);

サーバー内のすべての console.log が正しい値を取得します。つまり、ajax リクエストがあるときにレスポンスが返ってこないということですが、127.0.0.1:8888 を直接書き込むと、正しいレスポンスが得られます。

コンソールのメッセージは次のとおりです。

XMLHttpRequest cannot load http://127.0.0.1:8888/. Origin null is not allowed by Access-Control-Allow-Origin.

誰かがこれを修正するのを手伝ってください。私はこれを1日続けています。

編集 : ネットワーク タブのスクリーン キャプチャ。ご覧のとおり、サーバーはリクエストを受け取りますが、クライアントはレスポンスを受け取りません。これは、'Access-Control-Allow-Origin' : '*' を書き込んだ後でも行われます。 ここに画像の説明を入力

4

1 に答える 1

2

これは同じオリジン ポリシーです。HTTP 経由で JavaScript をホストする HTML ドキュメントを提供する必要があります ( CORSを使用していない場合は、Ajax で要求しているリソースと同じホスト名とポートから)。

于 2013-08-04T20:33:38.880 に答える