2011-07-08 9 views
0

クライアントブラウザがJQuery & AJAXリクエストでPUTまたはSEARCHメソッドをサポートしているかどうかを確認する方法はありますか?クライアントブラウザがPUT/DELETEメソッドをサポートしているかどうかを確認するプログラム的方法

私は、次のコードを持っている、とPUTはクロムとChromeで私のためにサーバ側で表示されない置けば...私は、知りたいのですがブラウザでサポートされていない、POST要求に変更する方法...下位互換性のために

function do_data(url, action, query) { 
try { 
    if ($.browser.msie) { 
     var xdr = new XDomainRequest(); 
     if (query !== null) { 
      console.log(query); 
      xdr.open(action, url + '?' + $.param(query)); 
     } else { 
      xdr.open(action, url); 
     } 
     xdr.onload = function() { 
      var data = $.parseJSON(this.responseText); 
      show_data(data); 
     }; 
     xdr.send(); 
    } else { 
     if (query !== null) { 
      $.ajax({ 
       url: url, 
       data: query, 
       type: action, 
       success: function(data) { 
        console.log(data); 
       }, 
       error: function(jqXHR, textStatus, errorThrown) { 
        console.log(textStatus); 
       } 
      }); 
     } else { 
      console.log(query); 
      $.ajax({ 
       url: url, 
       type: action, 
       success: function(msg) { 
        console.log(data); 
       } 
      }); 
     } 
    } 
} catch (e) {} 
} 

上記のコードを使用して、 "Pクロム/クロムの「UT」、error: function(jqXHR, textStatus, errorThrown)は単にerrorを印刷します。

サーバー側では、REQUEST_METHOD:OPTIONSが表示され、PUTは表示されません。ただ、この出くわす誰のために、確認する

...そこにプログラム的な方法

+0

すべての要求に200 OKで応答する簡単な "HTTPエコー"サービスを設定して、本文の全要求(ヘッダーとすべて)を返すことができます。 – Szocske

答えて

0

は、PUTの欠如を処理する一般的な方法ではなく、ほとんどのブラウザでサポートをDELETE HTTPのPOSTを使用することですトンネリング。基本的にPOSTを使用して、実際の動詞をX-HTTP-Method-Override HTTPヘッダーに追加します。サービスでは後者をチェックし、見つからなければ通常のHTTPメソッドを使用します。

詳細はhereを参照してください。

+0

しかし、これはクライアントブラウザがPUTをサポートしているかどうかをプログラムで確認することはできません。 – sdolgy

+0

この手法を使用すると、必ずしもそうする必要はありません。 AfaikにはPUTとDELETEのサポートをチェックする方法がありませんし、あなたがまだこの方法でプロビジョニングする必要がある場合でも可能です。 – Maurice

+0

ありがとう...これに私を得た:http://stackoverflow.com/questions/1813156/x-http-method-override-in-jquery – sdolgy

関連する問題