2009-02-27 120 views
4

我在HTML表中有一個簡單的記錄列表,每行有一個刪除鏈接。刪除鏈接將AJAX發佈請求發送到固定網址,如下所示:「/delete/record/5在Firefox中使用jQuery失敗的AJAX https POST請求

在使用https的服務器上運行jQuery的.ajax()調用時,使用POST消息創建AJAX請求。在OSX/Windows體系結構上的Firefox 3中,此調用失敗。它適用於我測試過的所有其他瀏覽器(OSX/Windows的:瀏覽器,Safari瀏覽器,IE7)

的請求從HTTPS站點來來往往相同的HTTPS站點。但我認爲在這個過程中,原始請求以http開始,並且在我們的服務器上有一個重定向嘗試從http-> https發送,而Firefox拒絕重定向作爲某種類型的僞造。

有沒有人有經驗做.ajax() JQuery的在HTTPS網站與Firefox電話?我注意到一些奇怪的地方,如果請求在URL中有「?var=xxx」參數,那麼請求似乎更常用,如果它沒有這些變量。

回答

13

Sounds like you're getting an HTTP 411 error.。如果您發送POST請求而沒有任何data,則可能發生此錯誤。

爲了解決這個問題,到data屬性添加一個空對象({})您的要求:

$.ajax({ 
    url: url, 
    type: 'POST', 
    data: {}, // <- set empty data 
    success: function(data, textStatus) { 
     // do something 
    } 
}); 
+0

感謝您的幫助!這正是問題所在!我有FF3和nginx,把一個空白數據{}修復了這個問題。我不需要數據{}中的id進行刪除,因爲該id已經在url中。點建議!謝謝。 – MikeN 2009-03-02 16:40:37

1

這似乎不太可能...不是我懷疑你。但我會建議下載Wireshark並觀察您的HTTP流量,看看您是否無法找出問題。您可以將其他瀏覽器發送的請求與FF3發出的請求進行比較,並查看返回的響應類型。如果在FF3中jQuery沒有正確運行,確實存在問題,那麼您可能需要修改一些代碼才能正常工作。

1

你或許可以安裝Firefox的活頭擴展,這將使你獲得你的請求/響應的所有信息。這樣你就會發現任何差異。

0

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

我從來沒有在HTTPS上的jQuery AJAX請求的問題。如果你還沒有看過Firebug,我建議你看看。

0

我.post的$通過發送一個空對象的「數據」參數可以在Firefox中工作。注意空括號內爲參數2:

$。員額(URL,{},函數(響應){警報( '完成');}, 「JSON」);