4

私の問題は次のとおりです。firefoxで応答がありません。つまり、うまくいきました。プレーンテキストなどで情報を取得するローカルスクリプトへの ajax 呼び出しが必要です。しかし、うまくいきません。現時点では、クロススクリプティングは問題にならないと思いますか?

JavaScript コードは単純です。

var targetUrl = "http://localhost/jQueryProxy.php";
var parameters = ""; // later

$.ajax({    
  type: "GET",
  async: true,
  url: targetUrl,
  data: parameters,
  success: function(param1, param2){
    alert(param1);
  }
});

そしてphpコードも:

<?php
   header('Content-type: text/xml'));
   echo "test";
?>
4

4 に答える 4

2

var targetUrl = "/jQueryProxy.php";
また、Firefoxのjavascriptコンソールをチェックしてエラーを探すこともできます:Ctrl++ShiftJ

ハンドラー(ソース)を追加して、jQueryのAjaxエラーメッセージを探すこともできます。

error:function (xhr, ajaxOptions, thrownError){
    alert(xhr.status);
    alert(xhr.statusText);
    alert(thrownError);
 }  

更新:私はいくつかのテストを行いました。FirefoxはAjaxをローカルファイルからWeb(さらに言えばlocalhostも)にブロックしているようですが、例外はスローされません。alert($('*', param1).text());atを使用successすると、現在のドキュメントの内容が表示されますが、これは奇妙なことです。
XMLをローカルファイルとして配置することも機能しません。FFとIEの動作には一貫性がなく、動作が大きく異なります。
最善の策は、htmlをサーバー(localhost)のxmlファイルと同じポート(ここでは80)に配置することです。
また、xmlが有効な場合は、を追加することを検討してdataType:'xml'ください。

于 2009-07-29T06:57:27.030 に答える
1

これは、コンテンツタイプがtext/xml有効なXMLではないためです。

XMLにしたい場合は、エコーを次のように変更します。

<?xml version="1.0" encoding="UTF-8"?>
<foo>test</foo>
于 2009-07-29T06:59:02.347 に答える
1

そのXSSの問題。一般に、ローカルの HTML ページは、公開の HTML ページよりもサンドボックス化されています。

于 2009-07-29T08:10:42.920 に答える
0

これはFFで動作するようです:

var targetUrl = "http://localhost/jQueryProxy.php";
var parameters = ""; // later

$.ajax({    
  type: "GET",
  async: true,
  url: targetUrl,
  data: parameters,
  success: function(param1, param2){
    alert($(param1).find("foo").text());
  }
});

そしてphpは次のようになります:

<?php
   header('Content-type: text/xml');
   echo '<?xml version="1.0" encoding="UTF-8"?><foo>test</foo>';
?>

よろしくお願いします、

ビョルン

于 2009-07-29T07:59:00.493 に答える