2009-02-27 23 views
4

HTMLテーブルのレコードの単純なリストを各行に削除リンクがあります。削除リンクは、「/delete/record/5FirefoxでjQueryを使用したAJAX https POSTリクエストが失敗する

のような固定URLへのAJAXポストリクエストを撃退します。AJAXリクエストは、httpsを使用するサーバーで実行されているときにjqueryの.ajax()コールでPOSTメッセージを使用して作成されます。この呼び出しは、OSX/Windowsアーキテクチャ上のFirefox 3では失敗します。それは私がテストした他のすべてのブラウザ(OSX/Windows:Chrome、Safari、IE7)で動作します。

リクエストはhttpsサイトから来て、同じhttpsサイトに移動しています。しかし、私はプロセスのどこかで、元のリクエストがhttpとして開始され、http-> httpsから送信するリダイレクト試行がサーバー上にあり、Firefoxが偽造のリダイレクトをリジェクトすると考えています。

誰も経験したことがありません.ajax() JQueryはFirefoxでhttpsサイトを呼び出しますか? URLに「?var=xxx」という引数があると、要求がより頻繁に機能しているように見えて、その変数がないと何か不思議に思う。

答えて

13

Sounds like you're getting an HTTP 411 error.。このエラーはdataなしでPOSTリクエストを送信している場合に発生します。

この問題を解決するには、あなたの要求にdataプロパティに空のオブジェクト({})を追加します。

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

助けてくれてありがとう!これはまさに問題でした!私はFF3とnginxを持っていて、空のデータ{}を入れて問題を解決しています。私はidがすでにURLに入っているので、削除のためにデータ{}にIDを必要としません。アドバイスにスポット!ありがとう。 – MikeN

+0

ようこそ。 – alex2k8

+0

ajax呼び出しでFirefox 3.0.xがどこで失敗するかを修正しました。ありがとう。 – ken

1

そう思わない...私はあなたを疑っているわけではありません。しかし、私はWiresharkをダウンロードしてHTTPトラフィックを見て、問題を特定できないかどうかを確認することをお勧めします。他のブラウザから送信されたリクエストとFF3から送信されたリクエストを比較して、どのような応答が返ってくるかを確認することができます。 FF3で正しく機能しないjQueryに問題がある場合は、コードの一部を変更して正しく動作させることができます。

1

Firefox Live Headers拡張機能をインストールすると、リクエスト/レスポンスのすべての情報にアクセスできます。このようにすれば、あなたはどんな違いをとらえることができます。

0

あなたのFirefoxにはプラグインまたはGreaseMonkeyスクリプトがインストールされていますか?

HTTPSでjQuery AJAXリクエストに問題が発生したことはありません。私はあなたがまだ持っていない場合、Firebugが何を表示するかを見てみることをお勧めします。

0

私は、「データ」のパラメータとして空のオブジェクトを送信することにより、Firefoxで動作するように$ .postを得ました。パラメータ2の空の括弧に注意してください。

$ .post(url、{}、関数(応答){alert( 'done');}、 "json");

関連する問題