2010-11-18 16 views
2

私はASP.NET MVC構成を持っており、レポート生成ツールを構築しています。私はJQueryのテーブルを出力しているので、ユーザはそれをPDFとしてフェッチする前にソートして並べ替えることができます。私のPDFコンポーネントは.NETベースであるため、修正されたテーブルをAJAX経由でサーバーに送り返す必要があります。受け入れ可能なURIの長さを超えるAjax呼び出し

問題は、URIが100k文字まで大きくなり、サーバが414(Request-URI Too Long)のステータスで応答することです。 IISでは、数千文字を超えるURIは許可されていないようです。

大きなURLを作成するのは奇妙だと私は認めています。だから私は何かが足りないかもしれないと思う。サーバーにデータを送信する別の方法がありますか、あるいはこれを別の方法で解決することは可能でしょうか?

答えて

5

数百文字より長いデータを送信する推奨方法は、GETの代わりにHTTPのPOSTを使用することです。 GETはすべてのデータをキーと値のペア(例:?foo=bar&baz=blah)としてURIに追加しますが、POSTはデータをリクエスト本体に入れます。要求の合計長さにも制限がありますが、URIに課される制限よりもはるかに大きいです。 jQuery側では、GETからPOSTへの切り替えは簡単です。詳しくは、jQuery.ajax()のドキュメントをお読みください。 サーバー側では、GETではなくPOSTからパラメータを読み込むように変更する必要があるかもしれませんが、ほとんどの場合、これは比較的簡単です。

+0

私は今、キー値オブジェクトを使用してPOST経由でデータを送信します。私はまた、サーバー側のロジックを変更しなければならなかったが、アクションにポスト値を受け入れる属性を追加するのと同じくらい簡単だった。ありがとう!:o) –

2

質問の鍵は、投稿です。 POSTをサーバーに戻す必要があります。

API jQuery AJAX post method.

$.post(url, [data], [success(data, textStatus, XMLHttpRequest)], [dataType]); 
+1

jqueryのドキュメントへのリンク+1 – tdammers

関連する問題