【问题标题】:jQuery.get() works on IE, but jQuery.post() does notjQuery.get() 适用于 IE,但 jQuery.post() 不适用
【发布时间】:2010-12-08 23:39:34
【问题描述】:

我有一个很奇怪的问题。我正在使用 jQuery 进行非常标准的 ajax 调用,但它拒绝使用 Internet Explorer 7。

代码如下:

$.ajax({
  url: updateUrl,
  cache: false,
  type: 'post',
  data: params, 
  success: function(data){
    handleResponse(data);
  }
 });

奇怪的是,如果我将类型更改为“获取”,则一切正常。我已经确定,使用 'post' IE 根本不会向服务器发送任何内容。

我还设置了所有类型的标头以防止缓存,但它们对“发布”问题没有影响。

【问题讨论】:

  • 在其他浏览器中也能用吗?
  • 您是否使用 Fiddler 检查 IE 是否正确发送 POST,以及服务器响应什么?可能是服务器端的问题...
  • @MikeRuhlin 我会试试的。感谢您的提示。

标签: jquery ajax internet-explorer


【解决方案1】:

您知道吗,根据$.post()docs(AJAX 调用的简写):

使用 POST 获取的页面永远不会 缓存

尝试为返回的数据设置一个 dataType 并添加一个错误处理程序来警告任何错误:

$.ajax({
  url: updateUrl,
  cache: false,
  type: 'post',
  data: params, 
  success: function(data){
    handleResponse(data);
  },
  error: function(xhr,textStatus){
    alert(textStatus);
  }
 });

另外,您确定它发布到的页面正在获取 POST 变量,而不仅仅是 GET 变量?

【讨论】:

  • 另外,您是否尝试将type: 'post', 设置为type: 'POST',?也许它对 IE7 有影响。
  • 不幸的是,这些变化没有任何区别。
  • @M.L.:这个错误提示了什么吗? IE中是否显示任何错误?
  • 我这里可能有一个完全不同的问题。我在 Linux 中使用带有 CrossOver 的 IE7,它可能无法正常工作。我必须稍后在 Windows 中检查。
  • @M.L.:这是一个很好的观点。这可能与此有关。
【解决方案2】:

我终于能够找到这个问题了。最终问题是 Sarissa 和 jQuery 之间的冲突。可以从here 找到解决方案。在建议的修复之后,IE 再次工作。

另一个问题也是 CrossOver 中的 IE7。总的来说,它似乎有问题,因为即使修复它也无法正常工作。

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2014-05-17
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多