【问题标题】:jQuery send AJAX return 404 in SafarijQuery 在 Safari 中发送 AJAX 返回 404
【发布时间】:2016-12-08 15:53:09
【问题描述】:

我在计算机浏览器中使用的代码总是很好, 但是当我在智能手机中使用 Safari 时, 当我第一次连接页面时,它将返回 404。 如果我在 Safari(智能手机)中刷新页面, 然后一切正常(它不再返回 404,直到我清除 Safari 浏览器的缓存)。

所以我确定网页(网址)是正确的。

有人知道怎么回事吗?

我使用 jquery-2.0.3(不确定是版本导致问题), 并且代码很简单,就像任何地方的例子一样:

$.post('url', {
    data
}).error(function(jqXHR, textStatus, errorThrown) {
    alert(jqXHR.status);
}).success(function(data) {

});

即使使用 $.ajax 也会导致同样的问题:

$.ajax({
    url: "url",
    type: "get",
    dataType: "text xml",
    data: data
    error: function(jqXHR, textStatus, errorThrown){
        alert(jqXHR.status);
    },
    success: function(data){

    }
});

我再说一遍,电脑浏览器一切正常, 所以url的路径是正确的。 而我直接在Safari中输入url,Safari可以找到, 所以问题不在于错误的网址。

我听说 Safari 在使用 jQuery AJAX 时会出现一些问题 (发送http请求), 而且我的文件在同一个域中(在服务器的 web 目录中)。

还是有什么情况会导致第一次进入页面总是取不到数据?

感谢您的建议!

【问题讨论】:

    标签: jquery ajax http-status-code-404 mobile-safari


    【解决方案1】:

    您还可以使用 ajax 处理各种状态码。试试这个

        $.ajax({
            type: "PUT",
            url: someURL,
            contentType: "application/json",
            data: JSON.stringify(data),
            dataType: "json",
            statusCode: {
                404: function() {
                    // handle the 404 response
                },
                401: function() {
                    // handle the 401 response
                }
            }
        })
    

    【讨论】:

    • 感谢您的回复,但我认为问题不在于 404(虽然它显示了,但刷新页面后,404 从未出现)。同样的代码在电脑浏览器中永远不会显示404,只会在第一次进入页面时出现在Safari中。
    【解决方案2】:

    这是链接的问题: cachePolicy in iOS

    我运行的url是在https下(ssl认证),

    Safari 会默认设置 NSURLRequestUseProtocolCachePolicy = 0。

    因此页面将在开始时根据默认设置被阻止。

    这是Safari的问题,

    但我不是 iOS 编码员,这就是为什么我不知道为什么以及如何找到问题的原因。

    希望对其他网页设计师有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2022-01-22
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      相关资源
      最近更新 更多