2012-07-23 118 views
1

我想通過爲每種語言創建一個xml文件來本地化我的字符串,然後使用ajax得到像這樣。Jquery ajax奇怪的錯誤

var text = new Object(); 
$.ajax({ 
     async: false, 
     type: 'GET', 
     url: 'english.xml', 
     dataType: "xml", 
     error: function(xhr, status, error) { 
       console.log("Lets see the error..."); 
       console.log(xhr.responseText); 
     }, 
     success: function(xml){ 
       $(xml).find('text').each(function(){ 
         text[$(this).attr('id')] = $(this).text(); 
       }); 
     } 
}); 
console.log("Lets see the object..."); 
console.log(text); 

我添加了一些console.logs來排除故障。 這是控制檯的屏幕截圖。 console

因此,你看到由於某種原因,請求失敗..任何想法爲什麼?

english.xml只包含:

<text id="call">Caller</text> 
<text id="chat">Chatter</text> 

更新: 更改數據類型爲文本,現在越來越成功響應,但「文本」對象沒有被更新?

var text = new Object(); 
$.ajax({ 
     type: 'GET', 
     url: 'english.xml', 
     dataType: "text", 
     error: function(xhr, status, error) { 
       console.log(xhr); 
       console.log(xhr.responseText); 
       console.log(status); 
       console.log(error); 
     }, 
     success: function(xml){ 
       $(xml).find('text').each(function(){ 
         text[$(this).attr('id')] = $(this).text(); 
       }); 
       console.log(xml); 
       console.log(text); 
     } 
}); 
+0

在'success'回調中移動'console.log'調用。目前,它在異步調用返回之前運行。 – 2012-07-23 13:20:10

+0

在同一目錄中是英文版的。也可以嘗試在xml的頂部添加<?xml version =「1.0」?> – 2012-07-23 13:21:24

+0

@JamesAllardice無關緊要,從第一個打印語句中可以清楚地看到它在錯誤callaback中被調用。 – 2012-07-23 13:21:54

回答

0

我想補充

<?xml version="1.0" encoding="utf-8"?> 

到文檔的頂部。我有一種感覺,因爲你告訴它你的返回類型將是xml它期望這種錯誤,當它沒有找到它時。

也不應該您的響應類型是"application/xml"而不僅僅是"xml"

此外,您將異步設置爲false,這意味着您要求進行同步調用。只是櫃面你想知道

編輯:我已經編輯自application/xml應該被用來代替text/xml

您還需要有一個根節點

<applicationCalls> 
    <text id="call">Caller</text> 
    <text id="chat">Chatter</text> 
</applicationCalls> 

你可以打電話給你的根節點不管你就像,試着讓它變得有意義。

+0

我已經嘗試了這些更改,並且也沒有將async設置爲false,並且仍然得到相同的響應。 – 2012-07-23 13:29:38

+0

我添加了一個根節點 <文本ID =「呼」>來電 <文本ID =「聊天」>顫振 但仍然得到同樣的錯誤,如果我通過XML驗證運行它,我得到無法找到元素'english'的聲明。 – 2012-07-23 15:13:38

+0

它看起來對我來說是合法的,除非我錯過了非常明顯的東西,它可能無效的唯一原因是它是在檢查模式,但我不明白爲什麼它會出現在這種情況下。 – 2012-07-23 15:24:34