jQuery Ajax Get不会将接收到的数据传递给Internet Explorer中的成功函数

时间:2012-08-01 18:31:27

标签: ajax internet-explorer jquery cross-browser

我的问题是当我使用jQuery ajax get时,我在响应主体获取数据但是它没有传递给成功函数。我怎样才能使它发挥作用?

我正在制作一个ajax,但它在ie9上不起作用(适用于其他浏览器)所以我改变了它只是为了测试:

    $.ajax({
        async : false,
        type: 'PUT',
        contentType: 'application/json',
        url:updateUrl + "?_" + new Date().getTime(),
        data: JSON.stringify(model),
        cache: false,
        dataType: "json",
        dataFilter: function(data) {
            var resp = eval('(' + data + ')');
            return resp;
        },
        success: function(data, status, xhr) {
            alert("success> " + data.property);
            alert(typeof data);
            r = resultResponse(data);
         },
        error: function(data, status, xhr) {
            alert("error> " + data.responseText);
            try {
                r = error($.parseJSON(data.responseText));
            } catch (err) {
                //Handle error
            }
        }
    });

数据警告未定义。我的put数据发送正确,我的服务器端运行良好并向客户端发送响应但是我得到了undefined而不是数据。经过一些测试,我意识到了这个问题:

当我捕获网络通信包时,即9响应体是我想要的。但是成功功能无法处理它。如果需要,我可以提供有关我的服务器的更多信息(当我将数据写入响应而不是在Java上使用jackson json mapper时,我可以使它工作 - 它正在工作,唯一的区别是没有包含ta工作版本在响应标题: 核心价值 Content-Type application / json; charset = UTF8)

我认为问题可以在客户端处理,我认为不在服务器端。 有什么想法吗?

编辑:我尝试过那种风格:

$.ajax({url: "/url",
  dataType: "text",
  success: function(text) {
    json = eval("(" + text + ")");
    // do something with JSON
  }
}); 

但是响应标题仍然是:

关键价值 Content-Type application / json; charset = UTF8

1 个答案:

答案 0 :(得分:0)

问题是错误的charset。它是UTF(而不是UTF-8)。