2009-07-29 72 views
2

我的問題是:在Firefox中我沒有得到任何迴應。在ie,它工作正常。 我想要一個本地腳本的ajax調用獲取純文本或其他東西的一些信息。但它不會工作。我認爲在這一點上跨腳本應該不是問題或者?jquery ajax調用不工作?! Firefox或XSS的問題?

的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"; 
?> 
+1

什麼問題?儘管您已經使用了五個問號,但我看不到任何問題。 – Gumbo 2009-07-29 06:53:26

+0

我刪除了幾個問號。 – Shoban 2009-07-29 06:59:53

回答

2

嘗試var targetUrl = "/jQueryProxy.php";
此外,您還可以檢查Firefox的JavaScript控制檯尋找一個錯誤:按Ctrl + Shift + J

您也可以嘗試尋找jQuery的Ajax的錯誤信息,通過添加處理器(source)

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

更新:我已經做了一些測試,是好像火狐塊阿賈克斯從本地文件到網絡(本地主機也是如此),但不會拋出異常。使用alert($('*', param1).text());success顯示當前文檔的內容,這很奇怪。
將XML作爲本地文件也不起作用,FF和IE的行爲是不一致的 - 它們的行爲非常不同。
最好的辦法是將html放在服務器(localhost)上,放在與xml文件相同的端口上(這裏是80)。
此外,當你的xml有效時,考慮加入dataType:'xml'

+0

多數民衆贊成它。我也認識到:與js的調用html已經在本地主機上! – stephan 2009-07-29 08:14:38

1

這是因爲內容類型爲text/xml,但它不是有效的XML。

如果你希望它是XML,改變回音是:

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

爲你更新了我的答案。 – seth 2009-07-29 07:08:55

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>'; 
?> 

最好的問候,

bjoe

+0

我的主要問題是,與JavaScript調用HTML不在服務器上...我只是雙擊它。而html是在本地主機根目錄所有阿賈克斯的東西的作品! thx全部 – stephan 2009-07-29 08:05:28

1

它是一個XSS問題。一般來說,本地html頁面比公共html頁面要多得多。