jQuery ajax не работает только на Mozilla - PullRequest
1 голос
/ 21 июля 2010

У меня есть следующий скрипт

$.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

Я использую firebug, и он говорит, что все в порядке.Даже показывает ответ от сервера.Вот что печатает мое предупреждение об ошибке:

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

update 2

Когда я открываю http://server.name/somefile.php из Mozilla, он показывает мне это сообщение:

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 голосов
/ 21 июля 2010

Попробуйте установить тип содержимого из самого запроса:

$.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');
   }
});
0 голосов
/ 21 мая 2011

Вы открываете с помощью:

<xs:annotation>

И закрыть с:

</xs:annotatin>

Исправьте орфографическую ошибку, и проблема должна исчезнуть.

0 голосов
/ 21 июля 2010

Я думаю, что вы выполняете кросс-серверный запрос (что более важно, кросс-доменный запрос), и поэтому вам необходимо выполнить дополнительные действия по обеспечению безопасности.

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

Кроме того, с Firebug отладка лучшекак объекты, то вы можете проверить возвращенные объекты.

console.log({ "error": XMLHttpRequest, "error2": textStatus,  "error3": errorThrown });
...