AJAX获取请求有时会在iOS Safari上失败

AJAX get request sometimes fails on iOS Safari

本文关键字:iOS Safari 失败 获取 请求 AJAX      更新时间:2024-05-31

我正在尝试使用jQuery AJAX将我创建的json提要显示到我的网站的另一个页面上。在大多数情况下,我使用以下代码让它完美地工作,除了在iOS Safari上它偶尔不工作(大约十分之一)。当我说它不起作用时,文档中不会附加任何内容,并且我的".items"元素为空。

这是我在窗口加载时运行的jquery脚本:

$.ajax({
    type: "GET",
    url : '/json',
    success: function (data) {
        var json = JSON.parse(data.replace(/"/g, '"'));
        $.each(json.data, function (index, element) {
            $(".items").append("<p>" + json.data[index].Title + "</p>");
        });
     }
});

这是JSON提要,它似乎是有效的,但当向我的ajax请求添加dataType:'JSON'时,什么都不返回:

{
    "data": 
    {
        "1": {
            "Title": "Page 1",
            "Url": "/page-1"
        },
        "2": {
            "Title": "Page 2",
            "Url": "/page-2"
        },
        "3": {
            "Title": "Page 3",
            "Url": "/page-3"
        }
    }
}

奇怪的是,当这不起作用时,不会显示任何错误消息,所以我不知道实际原因是什么。我怀疑要么JSON格式不正确,要么JSON由于任何原因没有得到解析。在桌面浏览器上,它总是有效的,所以这让我相信这些不是原因,也许这只是iOS的一个bug。

有人能帮我解决这个问题吗?有没有办法检查我的json是否解析正确?

我遇到了完全相同的问题,iOS Safari会返回",即使是静态有效的JSON文件。。。所以我在我们的代码之间寻找类似的东西,因为我们都在使用"GET",所以我决定尝试POST,因为为什么不。。。果不其然,POST总是通过ajax返回我的json,而GET没有。。。

这肯定是iOS safari中处理不正确的原因,但切换到POST对我来说很有效……以防其他人遇到同样的问题。