Jquery ajax奇怪的错误

时间:2012-07-23 13:18:05

标签: jquery ajax

我试图通过为每种语言创建一个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来进行故障排除。 这是控制台的屏幕截图。 console

所以你看到由于某种原因请求失败了......任何想法为什么?

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

1 个答案:

答案 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>

你可以随心所欲地调用你的根节点,试着把它做成有意义的事情。