我试图通过为每种语言创建一个xml文件来本地化我的字符串,然后使用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.log来进行故障排除。 这是控制台的屏幕截图。
所以你看到由于某种原因请求失败了......任何想法为什么?
english.xml只包含:
<text id="call">Caller</text>
<text id="chat">Chatter</text>
更新: 将数据类型更改为文本,现在获得成功响应,但“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 :(得分:0)
我会添加
<?xml version="1.0" encoding="utf-8"?>
到文档的顶部。我有一种感觉,因为你告诉它你的返回类型将是xml它期待这个并且当它找不到它时会出错。
也不应该将您的回复类型设为"application/xml"
,而不仅仅是"xml"
?
此外,您将async设置为false,这意味着您要求进行同步调用。只是因为你想知道
编辑:我已编辑,因为application/xml
应该真正使用而不是text/xml
您还需要一个根节点
<applicationCalls>
<text id="call">Caller</text>
<text id="chat">Chatter</text>
</applicationCalls>
你可以随心所欲地调用你的根节点,试着把它做成有意义的事情。