jquery ajax call not working?! firefox or xss problem?

Asked
Viewd14524

3

My problem is: in firefox i got no response. in ie it worked fine. I want a ajax call to a local script getting some information in plain text or something else. but it won't work. I think cross scripting should not a problem at this point or?

the javascript code is simple:

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

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

and the php code too:

<?php
   header('Content-type: text/xml'));
   echo "test";
?>
  • I removed few question marks.

    Shoban29 июля 2009, 06:59
  • What’s the question? Although you’ve used five question marks, I cannot see any question.

    Gumbo29 июля 2009, 06:53

4 ответов

2

попробуйте var targetUrl = "/jQueryProxy.php";
Также вы можете проверить консоль javascript Firefox, чтобы найти ошибку: Ctrl+Shift+J

Вы также можете попробовать найти сообщение об ошибке JQuery Ajax, добавив обработчик (источник) :

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

Обновление. Я провел некоторое тестирование. Кажется, Firefox блокирует Ajax от локальных файлов в Интернете (если на то пошло, localhost), но не генерирует исключение. Использование alert($('*', param1).text()); в success показывает содержимое текущего документа, что выглядит странно.
Размещение XML в качестве локального файла тоже не работает, FF и IE ведут себя несогласованно - они действуют по-разному.
Лучше всего разместить HTML-код на сервере (localhost) на том же порту, что и ваш XML-файл (здесь 80).
Кроме того, если ваш XML-файл действителен, подумайте о добавлении dataType:'xml'.

  • вот и все. Я также узнал: вызывающий html с js остановился на localhost!

    stephan29 июля 2009, 08:14
1

Its an XSS problem. Generally local html pages are much more sandboxed then public html pages.

0

this seems to work on 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());
  }
});

and php looks like that:

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

best regards,

bjoern

  • Моя основная проблема заключалась в том, что вызывающий html с javascript не находился на сервере… я просто дважды щелкнул по нему. пока html находится в корне localhost, все работает с ajax! спасибо всем

    stephan29 июля 2009, 08:05
1

It's because the content type is text/xml but it's not valid XML.

If you want it to be XML, change the echo to be:

<?xml version="1.0" encoding="UTF-8"?>
<foo>test</foo>