0

这是我最近发现的,我在 JS 中有以下代码:

$.ajax({
    type: 'POST',
    url: '/requestHandle',
    data: data,
    success: function(data) {
        var places = JSON.parse(data);
        // do something
    },
    error: function(data) {
        // do something else
    }
});

从我的后端返回的数据确实是 JSON 格式的,并且var places = JSON.parse(data);这一行在 Chrome 和 Firefox 中完美运行,它将我的 JSON 数据解析为一个 JS 列表;但是,在 Safari 中,var places = JSON.parse(data);给了我错误,因为 data 已经是一个 JS 列表。而不是做 var places = JSON.parse(data),只是更改为 var places = data 解决了错误,我想知道为什么它会自动转换?

提前致谢

4

1 回答 1

2

您最好的解决方案是告诉 jQuery 响应是 json,以便您始终将其作为 js 对象接收

$.ajax({
    type: 'POST',
    url: '/requestHandle',
    data: data,
    success: function(obj) {

        // do something
    },
    error: function(data) {
        // do something else
    },
    dataType: 'json'  // reponse is json so it will always be pre-parsed 
});
于 2013-08-16T01:52:26.593 回答