2011-12-07 14 views
1

JavaのサーブレットにJavascript関数を使用してリクエストを送信しています。サーブレットはcontent typeが "text/plain"に設定されたレスポンスを書き込みます。 私はこれをFirebugで追跡しました。要求がステータス200(OK)で完了しても、request.responseTextは常にnullです。 responseTextはなぜnullですか?私のAJAXリクエストがnull responseTextを受け取るのはなぜですか?

これまでJavaクライアントでこれを試してみましたが、これは正常に応答を受信しました。

google.maps.event.addListener(map, 'click', function(event) { 
    var request = new XMLHttpRequest(); 
    request.open("POST", <MY URL>, true); 
    request.onreadystatechange = function() { 
     if (request.readyState == 4) { 
       var resp = request.responseText; 
       console.log(resp); 
     } 
    } 

    request.send(null); 
    }); 

UPDATE:私が使用し、私はChromeを使用し、JavaScriptコンソールを表示して与えられた答えで提案後

は、私は自分のサーバーのコードでは、次のエラー

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

に気づきましたHTTPレスポンスに適切なヘッダーを設定するには、次のように入力します。

setHeader("Access-Control-Allow-Origin", "*"); 

そしてvoila - 応答で期待どおりのデータが返されました!

+0

ここには十分な情報がありません。どのブラウザですか?送信される応答テキストは何ですか? AJAX抽象化を使用することができます。 – Incognito

+0

'send()'メソッドの引数に 'null'ではなく実際の文字列を使用するとどうなりますか?私はそれが特に意味のある何かでなければならないとは思っていませんが、おそらくあなたのサーバーサイドのスクリプトはそれが得られないPOST変数を探しています。ちょっとした考え。 – Aaron

+0

Javaコードを表示できますか? – nnnnnn

答えて

1

どのブラウザを使用していますか? クロムを試し、ネットワークとコンソールの出力を確認してください。

私はXDR要求を行っていたために頭が痛いです。 FFではすべてが正しいと思われ、200コードが返されますが、クロムを使用するとさらに詳細な情報が得られ、「Access-Control-Allow-Origin」エラーが表示されます。

サーバー側では、任意のソースページからの要求を許可するために、「Access-Control-Allow-Origin:*」を設定してください。

+0

クライアントとサーバーの両方がローカルです。しかし、私はChromeでテストを試し、何が起こるか見てみましょう。 –

+0

にスポット!それは再びそれをする。ありがとう!! –

+0

同じローカルサーバーにある場合でも、XDR要求を行う方法はいくつかあります。 – EricSonaron

関連する問題