私はこれまで ajax をあまり注意深く勉強したことがなく、問題を見つけて解決策を見つけたときに使用しました。
1. Ajax Get と Post の違いについて説明します
Get メソッド:
get メソッドを使用して単純なデータを送信しますが、サイズは通常 1KB に制限されます。が URL に追加されます。送信 (HTTP ヘッダー送信)。つまり、ブラウザーは、各フォーム フィールド要素とそのデータを、URL パラメーターの形式でリクエスト ラインのリソース パスの末尾に追加します。最も重要なことは、クライアントのブラウザによってキャッシュされるため、他の人がブラウザの履歴からアカウント番号やパスワードなどの顧客データを読み取ることができるということです。したがって、場合によっては、get メソッドが重大なセキュリティ問題を引き起こす可能性があります。
Post メソッド:
POST メソッドを使用すると、ブラウザは各フォーム フィールド要素とそのデータを、HTTP メッセージのパラメータとしてではなく、HTTP メッセージのエンティティ コンテンツとして Web サーバーに送信します。 URL アドレスの送信。POST メソッドを使用した場合、送信されるデータ量は GET メソッドを使用した場合よりもはるかに大きくなります。
つまり、GET メソッドは送信するデータ量が少なく、処理効率が高く、セキュリティが低く、キャッシュされますが、POST ではその逆が当てはまります。
get メソッドを使用する場合は、次の点に注意してください。 :
1 get リクエスト (または URL に渡されたパラメータを含むもの) の場合、渡されたパラメータは最初に encodeURIComponent メソッドによって処理される必要があります。例: var url = "update.php?username=" encodeURIComponent(username) "&content=" encodeURIComponent
(content) "&id=1" ;
Post メソッドを使用する場合は注意してください :
1. ヘッダーの Context-Type を application/x-www-form-urlencode に設定して、サーバーがエンティティにパラメーター変数があることを認識できるようにします。通常は SetRequestHeader("Context-Type", "application) XmlHttpRequest オブジェクトの /x-www-form-urlencoded" が使用されます ;")。例:
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
2. パラメーターは、名前と値が 1 対 1 で対応するキーと値のペアです。たとえば、var name=abc&sex=man&age=18 と var name=?abc&sex=man&age=18 を使用します。 =18 はどちらも誤りです。
3. パラメーターは Send (パラメーター) メソッドで送信されます。例: xmlHttp.send(name); 4. サーバー側のリクエスト パラメーターは、Get と Post を区別します。 get メソッドの場合は $username = $_GET["username"]; post メソッドの場合は $username = $_POST["username"]; Post メソッドと Get メソッドは次のとおりです。
:
1. Post がデータを送信する場合、URL にデータを表示する必要はありませんが、Get メソッドは URL に表示する必要があります。
2.Post は 2M に達する大量のデータを送信しますが、Get メソッドは URL の長さの制限により約 1024 バイトしか転送できません。
3.Post は、名前が示すように、送信することを目的としています。 Get がサーバー セグメントにデータを送信できる理由は、http リクエストの内容としてどのような種類のデータが必要であるかをサーバーに伝えるためだけです。 Get は送信される Http ヘッダーに含まれます。 get メソッドは、Request.QueryString["strName"] を使用して受信します。post メソッドは、Request.Form["strName"] を使用して受信します。
注:
2 つの送信メソッドは統合できますが、 , Request("strName ") を使用して送信されたデータを取得しますが、これはプログラムの効率に影響するため、お勧めできません。
一般に、フォームの送信に Get メソッドの使用は避けてください。セキュリティ上の問題が発生する可能性があります。
AJAX コードの文字化けの問題
コードの文字化けの原因:
1. xtmlhttp が返すデータのデフォルトの文字エンコーディングは utf-8 です。クライアントページが gb2312 などのエンコードされたデータの場合、文字化けが発生します
2. 投稿で送信されたデータのデフォルトの文字エンコーディングメソッドは utf-8 です。サーバーが gb2312 である場合、または他のエンコードされたデータでは文字化けが発生します。解決策は次のとおりです。: 1。クライアントが gb2312 エンコードの場合、出力を指定します。サーバー上のストリームエンコーディング
2. サーバー側はクライアントとクライアントの両方で utf-8 エンコーディングを使用します
gb2312:header('Content-Type:text/html;charset=GB2312'); header('Content-Type:text/html;charset=utf -8');
注: 上記のメソッドを実行しても文字化けが返される場合は、メソッドが get リクエスト (またはその他) であるかどうかを確認してください。パラメータを渡すURLを含む)、渡されたパラメータは最初にencodeURIComponentメソッドで処理される必要があります。encodeURIComponentで処理されないと文字化けも発生します。
以下は私が見つけた例です。私が書いたものは比較的簡単で、あまり標準的ではないので、他の人が書いたものを参照する方が良いです(笑)。
コードをコピー
コードは次のとおりです: