jQuery ajax不仅仅适用于Mozilla

时间:2010-07-21 18:23:15

标签: php jquery ajax mozilla

我有以下脚本

$.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.php生成一些xml内容并打印它的另一台服务器。

它在Chrome中完美运行,但在Mozilla中它显示了我的错误警告。

这里有什么问题?

更新1

我正在使用萤火虫,它说一切都很好。甚至它显示了来自服务器的响应。这是我的错误提示打印:

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的内容

3 个答案:

答案 0 :(得分: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 });

答案 1 :(得分: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');
   }
});

答案 2 :(得分:0)

您打开:

<xs:annotation>

关闭:

</xs:annotatin>

修正拼写错误,问题应该消失。