1

次のスクリプトがあります

$.ajax({
   type:"GET",
   url:"views/jquery/js/private/visual_constructor/proxy.php",
   data:null,
   timeout:55000, 
   dataType:"xml",
   error:function(XMLHttpRequest, textStatus, errorThrown){
         alert("error="+XMLHttpRequest+" error2="+textStatus+" error3="+errorThrown);
   },
   success:function(response){                      
         alert('sucess');
   }
});

proxy.phpの内容は次のとおりです。

<?php
   header('Content-type: application/xml');
   echo file_get_contents('http://server.name/somefile.php');
?>

別のサーバーに接続し、そこでsomefile.phpxmlコンテンツを生成して印刷します。

Chromeでは完全に機能しますが、Mozillaではエラーアラートが表示されます。

ここで何が問題になっていますか?

アップデート1

私はfirebugを使用していますが、すべてが問題ないと表示されます。それでもサーバーからの応答を示しています。そして、これが私のエラーアラートが出力するものです:

error=[object XMLHttpRequest] error2=parsererror error3=parsererror

アップデート2

Mozillaからhttp://server.name/somefile.phpを開くと、次のメッセージが表示されます。

XML Parsing Error: not well-formed
Location: http://authoringtool/views/jquery/js/private/visual_constructor/proxy.php
Line Number 8, Column 94:  <xs:annotation><xs:documentation xml:lang="en">Network     Type</xs:documentation></xs:annotatin>

しかし、Chromeから開くと、エラーは表示されませんが、somefile.phpのコンテンツが出力されます。

4

3 に答える 3

0

クロスサーバー リクエスト (さらに重要なのは、クロス ドメイン リクエスト) を行っていると思います。そのため、追加のセキュリティ対策を行う必要があります。

https://developer.mozilla.org/En/HTTP_access_control

https://developer.mozilla.org/En/Server-Side_Access_Control

http://www.w3.org/TR/cors/

http://arunranga.com/examples/access-control/

ファイアーバグ

また、Firebug では、デバッグはオブジェクトの方が優れているため、返されたオブジェクトを調べることができます。

console.log({ "error": XMLHttpRequest, "error2": textStatus,  "error3": errorThrown });
于 2010-07-21T18:28:07.083 に答える
0

あなたは次のように開きます:

<xs:annotation>

そして次のように締めくくります:

</xs:annotatin>

スペルミスを修正すると、問題は解決するはずです。

于 2011-05-21T13:02:18.197 に答える
0

クエリ自体からコンテンツ タイプを設定してみてください。

$.ajax({
   type:"GET",
   url:"views/jquery/js/private/visual_constructor/proxy.php",
   data:null,
   timeout:55000,
   contentType: "application/xml;charset=UTF-8",
   dataType:"xml",
   error:function(XMLHttpRequest, textStatus, errorThrown){
         alert("error="+XMLHttpRequest+" error2="+textStatus+" error3="+errorThrown);
   },
   success:function(response){                      
         alert('sucess');
   }
});
于 2010-07-21T18:50:30.090 に答える