2013-07-23 22 views
14

私は3mbほど大きな文字列をPOSTする必要があります。これはurl paramsを使用せずにPHPに送ることができますか?Jquery Ajax - 巨大な文字列値を投稿する

私がurl paramsで送信すると、リクエストはURLのサイズ制限に達します。

これを回避するにはどうすればよいですか?どんな手掛かり?

ありがとうございます。

実際に私はこのようにそれをやっている:

$.ajax({ 
type:'POST', 
....... 
data:{string:3MB_string} 
}); 

私はPHPとjQueryを使用しています、と私はsite.com/script.php

のように、シンプルなURLにPHPに3メガバイトのbase64文字列を送信するためにIKEをwouldl

http://jsfiddle.net/QSyMc/

の文字列は、File ReaderのAPIのbase64で画像

これは文字列の例であるが、これはサイズが、それは3メガバイトはあなたに3メガバイトを表示するために貼り付けるに迷惑少ない原因ではなく、制限に達していないだろう

答えて

24

あなたは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 
+4

私は既にこのように送信しています:P @Darin Dimitrovとこの原因のURLサイズの上限が – bombastic

+0

に達しました。私はコンソールに「あなたがリクエストの上限に達しました」という意味です – bombastic

+0

@bombastic私たちはもっと情報を必要とします。あなたもそれを送信している 'URL'は何ですか?どのようなサーバーサイドの言語を使用していますか? – crush

-1

はこれを試してみてください:

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

あなたは間違いなく、POSTメソッドを使用する必要があります。文字列が依然として大きければ、php.iniファイルを調べて最大POSTパラメータサイズを調べます。

任意のそれらのいずれかの操作を行い、この値の値を変更するには:php.iniで

1.変更値

post_max_size=20M 
upload_max_filesize=20M 

2.またはファイル

を.htaccessファイルに次のコードを追加しますが
php_value post_max_size 20M 
php_value upload_max_filesize 20M 

アクセスするものによってどちらが使用されますか。

7

jQuery.ajaxドキュメントから偽とあなたの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); 
    } 
}); 

processDataで試してみてください:

PROCESSDATA(デフォルト:真)

型:Boolean

デフォルトでは、 のオブジェクトとしてデータオプションに渡されたデータ(技術的には、 文字列以外)が処理され、クエリ文字列に変換され、 がデフォルトのコンテンツタイプ "application/x-www -form-urlencoded "と入力します。 DOMDocumentまたはその他の未処理データを送信する場合は、この オプションをfalseに設定します。

+0

理由これが必要だと思うのですか? – crush

+0

私は答えを編集しました – krampstudio

+0

ありがとう、それは働いた。驚くばかり。 – Nabid

3

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