0

以下のコードはhtmlを取得し、エンコードして任意のphpファイルに送信します。phpファイルには「hello」文字列のみが含まれています。しかし、関数を実行すると、すべてのhtmlを取得できますが、文字列が長いために送信できません。HELLOアラートが表示されないためです。Ajaxは定義された最長を許可しますか?私は正しいですか?

function getlongdata(){
    htmldatas=encodeURIComponent($('#divlongcontent').html());
    alert(htmldatas);
    $.ajax({
         type: "GET",
         url: "sayhello.php",
         data: "longdatago="+htmldatas,
         success: function(msg){
            alert(msg);
         }
     });
}


<div id="divlongcontent">blablabla1000000000timesblaaaaaaa</div>
4

3 に答える 3

4

ブラウザはURLの長さに制限を課します。

大量のデータを送信する場合は、POSTリクエストを使用して、クエリ文字列の代わりにメッセージ本文に入れてください。

于 2012-11-15T16:36:41.187 に答える
0

ウィキペディアによると、POSTの代わりに使用してください:GET

HTTP GETは、データの取得にも適していない場合があります。この例は、URLで大量のデータを指定する必要がある場合です。ブラウザとWebサーバーには、切り捨てやエラーなしで処理するURLの長さに制限がある場合があります。URLおよびクエリ文字列で予約文字をパーセントエンコードすると、その長さが大幅に長くなる可能性があります。ApacheHTTP ServerはURLで最大4,000文字を処理できますが、MicrosoftInternetExplorerはどのURLでも2048文字に制限されています。同様に、リクエストを完了するためにユーザー名やパスワードなどの機密情報を他のデータと一緒に送信する必要がある場合は、HTTPGETを使用しないでください。このような場合、メッセージ本文の暗号化にHTTPSが使用されている場合でも、URLのデータはクリアテキストで渡され、多くのサーバー、プロキシ、また、ブラウザは、サードパーティに表示される可能性のある方法で完全なURLをログに記録します。このような場合は、HTTPPOSTを使用する必要があります。

于 2012-11-15T16:36:37.807 に答える
0

データが文字未満である限り2000、を安全に使用できますget。ただし、ある時点でその制限を超えていると感じた場合は、すべてのブラウザで一貫して機能するとは限りません。

ajax通話中に、typeをからgetに変更するpostと、すべてが正常に機能するはずです。

を使用して送信できるデータの量に制限はありませんpost

于 2012-11-15T16:44:17.087 に答える