web-dev-qa-db-ja.com

Jquery Ajax-巨大な文字列値を投稿する

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/

17
bombastic

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
28
Darin Dimitrov

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に設定します。

9
krampstudio

必ず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

どちらを使用するかは、アクセスできるものによって異なります。

3
Artem Kiselev

同様の問題に出会いました。クエリ文字列の長さではなく、サーバーに渡す変数の数です。 php.iniは、max_input_varsフィールドに1200個の変数を制限します。私の場合、post_max_sizeの量ではなく、その量を超えていました。前に戻って、クエリをより効率的かつ制限内にする必要がありました。 php.iniの設定を上げることができたと思いますが、重要ではないクエリパラメータを無効にすることで、より良いコードを作成できました。

3
jdp

これを試して:

var str = "YOUR STRING";
$.ajax({
    url: 'YOUR URL',
    type: 'POST',
    data: { mystring: str },
    success: function(result) {
        console.log(result);
    }
});
0
Dhaval Bharadva