3

我在 HTML 表中有一个简单的记录列表,每行都有一个删除链接。删除链接将 AJAX 发布请求发送到固定 url,如下所示:“ /delete/record/5

.ajax()AJAX 请求是在使用 https 的服务器上运行时使用带有 POST 消息的 jquery调用创建的。此调用在 OSX/Windows 架构上的 Firefox 3 中失败。它适用于我测试过的所有其他浏览器(OSX/Windows:Chrome、Safari、IE7。)

这些请求来自一个 https 站点并转到同一个 https 站点。但我认为在这个过程中的某个地方,原始请求以 http 开始,并且我们的服务器上尝试重定向从 http->https 发送它,而 Firefox 拒绝该重定向作为某种类型的伪造。

有没有人有过.ajax()使用 Firefox 在 https 网站上进行 JQuery 调用的经验?我注意到一些奇怪的地方,如果请求?var=xxx在 URL 中有“”参数,则请求似乎比没有这些变量的请求更频繁地工作。

4

5 回答 5

12

听起来您收到了 HTTP 411 错误。. 如果您发送的POST请求没有任何data.

要解决此问题,请在请求的属性中添加一个空对象 ( {}) :data

$.ajax({ 
    url: url, 
    type: 'POST', 
    data: {}, // <- set empty data 
    success: function(data, textStatus) { 
        // do something 
    } 
}); 
于 2009-02-28T03:18:58.063 回答
1

这似乎不太可能......不是我怀疑你。但我建议下载 Wireshark 并观察你的 HTTP 流量,看看你是否无法隔离问题。您将能够将其他浏览器发送的请求与 FF3 发送的请求进行比较,并查看返回的响应类型。如果确实是 jQuery 在 FF3 中无法正常运行的问题,您也许可以更改一些代码以使其正常运行。

于 2009-02-27T23:42:39.157 回答
1

您可能可以安装 Firefox Live Headers 扩展,它可以让您访问请求/响应中的所有信息。这样你就会发现任何差异。

于 2009-02-27T23:47:25.247 回答
0

您的 Firefox 上是否安装了任何插件或 GreaseMonkey 脚本?

我从来没有遇到过 HTTPS 上的 jQuery AJAX 请求问题。如果你还没有的话,我建议你看看Firebug出现了什么。

于 2009-02-28T00:35:47.173 回答
0

$.post通过发送一个空对象作为data参数在 Firefox 中工作。注意参数 2 的空括号:

$.post(url, {}, function(response){ alert('done'); }, "json");
于 2009-03-27T21:33:38.157 回答