POST 3MB程度の大きな文字列が必要です。URLパラメータではなくphpに送信できますか?
Url paramsで送信すると、リクエストはurlのサイズ制限に達します。
これをどのように回避できますか?どんな手掛かり?
どうもありがとう。
実際、私はこれを次のようにしています:
$.ajax({
type:'POST',
.......
data:{string:3MB_string}
});
PHPとjQueryを使用しています。3MBのbase64文字列をsite.com/script.php
のような単純なURLでphpに送信したいと思います。
文字列は、ファイルリーダーAPI base64イメージです
これは文字列の例ですが、サイズ制限に達しません。3MBではないので、貼り付けで3MBを表示するのが面倒になりません http://jsfiddle.net/QSyMc/
POSTリクエストを使用する必要があります。
$.ajax({
url: '/script.php',
type: 'POST',
data: { value: 'some huge string here' },
success: function(result) {
alert('the request was successfully sent to the server');
}
});
サーバー側のスクリプトで値を取得します。
$_POST["value"]
また、許可されるリクエストサイズを増やす必要がある場合があります。たとえば、.htaccess
ファイルまたはphp.ini
を設定できます post_max_size
値:
#set max post size
php_value post_max_size 20M
processData
をfalseにしてJSONの文字列表現を試してください
var data = { "some" : "data" };
$.ajax({
type: "POST",
url: "/script",
processData: false,
contentType: 'application/json',
data: JSON.stringify(data),
success: function(r) {
console.log(r);
}
});
jQuery.ajax ドキュメントから:
processData(デフォルト:true)
タイプ:ブール
デフォルトでは、データオプションにオブジェクト(技術的には文字列以外)として渡されたデータが処理され、クエリ文字列に変換されます、デフォルトのコンテンツタイプ「application/x-www-form-urlencoded」に適合します。 DOMDocumentまたは他の未処理データを送信する場合は、このオプションをfalseに設定します。
必ずPOSTメソッドを使用する必要があります。文字列がまだ大きすぎる場合は、php.iniファイルをチェックして最大POSTパラメータサイズを確認してください。
この値を変更するには、次のいずれかを実行します。
1。php.iniの値を変更する
post_max_size=20M
upload_max_filesize=20M
2。またはこのコードを.htaccessファイルに追加
php_value post_max_size 20M
php_value upload_max_filesize 20M
どちらを使用するかは、アクセスできるものによって異なります。
同様の問題に出会いました。クエリ文字列の長さではなく、サーバーに渡す変数の数です。 php.iniは、max_input_varsフィールドに1200個の変数を制限します。私の場合、post_max_sizeの量ではなく、その量を超えていました。前に戻って、クエリをより効率的かつ制限内にする必要がありました。 php.iniの設定を上げることができたと思いますが、重要ではないクエリパラメータを無効にすることで、より良いコードを作成できました。
これを試して:
var str = "YOUR STRING";
$.ajax({
url: 'YOUR URL',
type: 'POST',
data: { mystring: str },
success: function(result) {
console.log(result);
}
});