クエリしようとしている外部サーバーにデータベースがあります。これを行うには、ローカル サーバー (Tomcat) にアクセスし、クエリを追加してページへの AJAX 呼び出し (XMLHttpRequest オブジェクトのみ - 私は JavaScript ライブラリを使用していません) を作成します。まったく同じ URL を Firefox に貼り付けると、Firefox は XML ドキュメントをダウンロードしようとします。私の目標は、AJAX を使用してその XML ドキュメントを取得することです。
私が抱えている問題は、AJAX で呼び出しを行うと、Firebug が、GET 応答が 302 "Moved Temporarily" を返し、横に赤い X が表示されることです。GET 応答のヘッダーには、OAuth 承認の Location パラメーターが含まれています。この Location パラメーターをコピーして貼り付けると、正しいページに移動します (XML オブジェクトをダウンロードするように指示されます)。
編集: jQuery を使用して試してみました$.get("URL", function(data){alert(data)});
が、同じことが起こりました - アラートはありませんが、赤い GET リクエストと Firebug の 302 です。
この情報に基づいて、私が呼び出しているデータベースは、最初に OAuth のものにリダイレクトしようとしていると思います。その後、データベースにアクセスするための承認された URL が返されます。これを使用して、データベースを呼び出し、XML オブジェクトを取得してから、目的の作業を行う必要があります。AJAX はリダイレクトを処理できないようで、代わりにクラッシュしています。
ただし、次のコードを使用してみたため、これが正しいかどうかはわかりません。
else if (xmlhttp.readyState == 4 && xmlhttp.status == 302){
alert("Hello 302!");
}
else {
document.getElementById("test").innerHTML = "On state: " + xmlhttp.readyState + "<br />HTTP Status: " + xmlhttp.status;
}
そしてそれは私に警告を与えませんでした-代わりに、状態4とステータス0であることを示しています.ステータス0を返す理由がわかりません.(編集:回答1で言及されたタイプミスを修正し、何も変更されませんでした)
だから私の質問は:
- 正確には、ここで何が起こっているのですか?
- 0 ステータスとは何ですか? Firebug がコンソールで 302 の横に X を表示するのはなぜですか? リダイレクトがないのはなぜですか?
- どうすればこれを修正できますか?
- 修正したら、その XML ファイルを取得できますか、それとも他に何かする必要がありますか?
更新して編集: これはクロスサイト スクリプティングの問題です。外部サーバーにアクセスしてまったく同じスクリプトを実行したところ、クエリの結果を含む XML ドキュメントを取得して解析することができました。唯一の障害は、外部サーバーからこれを行う方法を理解することです。私は外部サーバーの構成にアクセスでき、それを操作して他のサイトからデータベース クエリ経由でアクセスできるようにする方法を研究しています。