0

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

我正在制作一个ajax put,但它在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
            }
        }
    });

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

当我在 ie 9 处捕获网络通信数据包时,响应正文就是我想要的。但是成功函数无法处理它。如果需要,我可以提供有关我的服务器的更多信息(当我将数据写入响应时,我可以使其工作,而不是在 Java 中使用 jackson json 映射器 - 它正在工作,唯一的区别是响应中不包含工作版本标头:键值内容类型 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

4

1 回答 1

0

问题是错误的字符集。它是 UTF(而不是 UTF-8)。

于 2012-08-02T11:50:19.770 回答