2011-12-17 17 views
3

私はエラーを得た:...要求は失敗しました:URIを長すぎる(8190よりも長い)

request failed: URI too long (longer than 8190)

私はこの1つのためにStackOverflowの上の他の記事を見てきました。これらの記事は、お勧め:ポストを使用して

  • 変化していないApacheの設定(同意)
  • を、
  • は私がPOSTにjQueryのAJAXを使用してい

ポストでjsonpを使用していない取得していない:

$.ajax({ 
     url: "test.php", 
     dataType: "json", 
     data: paras, 
     type: "POST", 
     success: function(ret){callback(ret);} 
    }); 

jsonpではなくjsonを使用することができます。正しい?もしそうなら、なぜ私はまだエラーが発生しているのでしょうか?

答えて

6

proccessDataをfalseに設定してください。ドキュメントから

By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data, set this option to false.

ので、URLに追加されたデータを防ぐために:正直なところ

$.ajax({ 
    url: "test.php", 
    dataType: "application/json", 
    data: paras, 
    type: "POST", 
    proccessData: false, // this is true by default 
    success: function(ret){callback(ret);} 
}); 

を、私はこれは自動だと思ったが、あなたのURLが長すぎるので、それは価値があります一発。

0

jQueryを使用して大きなフォームを送信したときにこの問題に遭遇し、this pluginを追加して解決できました。

$(formSelectorHere).ajaxSubmit({ 
     url: myURL, 
     type: 'post', 
     contentType: "multipart/form-data", 
     data: $(this).serialize(), 
     success: function(data) { 
     function(data) { 
      //success code here// 
     } 
    }); 

フォームを送信するために、これを使用していない場合は、これはに関連していないかもしれない:プラグインを追加した後にフォームを送信するには、次のコードを使用して、例えば

は、私のために問題を解決しましたあなたとあなたの問題を解決することはできませんが、それはこの問題が現れる最も一般的な状況です。だから私はそれが言及する価値があると考えました。 (このプラグインは、JSONを使用してフォームを送信することもできますが、個人的にはテストしていません)。

関連する問題