【问题标题】:jQuery.ajax doesn't detect http 500 error in internet explorerjQuery.ajax 在 Internet Explorer 中未检测到 http 500 错误
【发布时间】:2014-07-24 02:46:39
【问题描述】:

我正在使用 jquery 进行 AJAX 调用,该调用返回 HTTP 500 错误。在 Firefox 中工作正常,但 IE 报告 200 错误。我知道 PHP 是正确的,因为如果我直接进入该页面,它会显示为 500 错误。只是 jQuery 部分在 IE 中不起作用。

这里是 ajax 调用:

$.ajax({
  url: "download.php",
  data: {
    removefile: filename
  },
  type: "GET",
  dataType: "html",
  success: function(html) {
    alert("Success");
  },
  error: function(xhr, status, errorThrown) {
    alert("Error: " + xhr.status);
  },
  complete: function(xhr, status) {
    alert("Complete: " + xhr.status);
  }
});

我使用的 php 类似于:

header($_SERVER['SERVER_PROTOCOL'] . " 500 Internal Server Error", true, 500);
echo "Remove failed";

我在 IE 9 上进行测试,但尝试了所有不同的兼容模式,但都遇到了同样的问题。

有什么想法吗?

【问题讨论】:

    标签: javascript php jquery ajax internet-explorer


    【解决方案1】:

    呃!将请求类型从“GET”更改为“POST”可以解决问题。猜测 IE 正在缓存响应。不是同一个问题,但Error with Internet Explorer and Jquery Ajax 有类似的答案。

    抱歉打扰了。

    【讨论】:

    • 快速提示:您可以禁用缓存 - cache:false
    • @JackWilliam:感谢您的提示。那会被推荐吗?从我在learn.jquery.com/ajax/key-concepts 阅读的内容来看,听起来事实上的路线应该是使用 POST 并且不需要缓存?
    • 没问题 :-) 是的,在某些情况下我会,但这绝对取决于您的数据和应用程序,例如,如果您处理密码或敏感数据,您不应该使用 GET,句号.不过值得注意的是,GET 稍微快一点,learn more here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2013-08-12
    相关资源
    最近更新 更多