1

我试图通过为每种语言创建一个 xml 文件然后使用 ajax get 来本地化我的字符串。

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 来排除故障。这是控制台的屏幕截图。 安慰

所以你看到由于某种原因请求失败了..知道为什么吗?

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);
        }
});
4

1 回答 1

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>

你可以随意调用你的根节点,只要试着让它有意义。

于 2012-07-23T13:23:07.913 回答