ホームページ >バックエンド開発 >PHPチュートリアル >Jquery AJAX POSTとGETの違い
1: ブラウザは GET アクセスを冪等であるとみなします
つまり、同じ URL に対する結果は 1 つだけです (これは、URL 文字列全体が正確に一致することを意味します)
したがって、URL 文字列が 2 回目の訪問中に変更されない場合、ブラウザは最初の訪問の結果を取り出した後、直接
POST は変更されたアクセスとみなされます (ブラウザは POST の送信が変更されたに違いないと考えます)
GET の冪等アクセスを防ぐには、それを追加するだけですURLの後に? +new Date();, [つまり、訪問ごとに URL 文字列が異なるようになります]
WEB ページをデザインするときもこの原則に従う必要があります
2: 1. Ajax Get と Post の違いについて話します
get メソッド:
get メソッドは単純なデータの送信に使用できますが、データは通常 1KB に制限され、データは URL に追加されて送信されます (HTTP ヘッダー送信)。つまり、ブラウザーが各形式を変換します。 URL パラメーターに応じた field 要素とそのデータが、リクエスト行のリソース パスに追加されます。最も重要なことは、クライアントのブラウザによってキャッシュされるため、他の人がブラウザの履歴からアカウント番号やパスワードなどの顧客データを読み取ることができるということです。したがって、場合によっては、get メソッドが重大なセキュリティ問題を引き起こす可能性があります。
Post メソッド:
POST メソッドを使用すると、ブラウザーは、各フォーム フィールド要素とそのデータを、URL アドレスのパラメーターとして渡すのではなく、HTTP メッセージのエンティティ コンテンツとして Web サーバーに送信します。 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 は、エンティティにパラメーター変数があることをサーバーに認識させるため、通常は XmlHttpRequest オブジェクトの SetRequestHeader("Context-Type","application/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=update.php?
abc&sex=man&age=18 と var name=? の記述に注意してください。 abc&sex=man&age=18 は両方とも間違っています。
3. パラメーターは (パラメーター) メソッドの Send にあります。 get メソッドの場合は、直接 xmlHttp.send(null);
4. サーバー側のリクエストパラメーターは Get と Post を区別します。 get メソッドの場合は $username = $_GET["username"]; post メソッドの場合は $username = $_POST["username"];
AJAX の文字化け問題
コードが文字化けする原因は次のとおりです。
1, xtmlhttp Return データのデフォルトの文字エンコーディングは utf-8 です。クライアントページが gb2312 などのエンコードされたデータの場合、文字化けが発生します。 2. post メソッドで送信されるデータのデフォルトの文字エンコーディングは utf-8 です。 8. サーバーページが gb2312 またはその他のエンコードデータの場合 文字化けが発生します
解決策は次のとおりです:
1. クライアントが gb2312 エンコードの場合、サーバーで出力ストリームのエンコードを指定します
2. UTF-8 エンコーディング
gb2312:header('Content-Type :text/html;charset=GB2312');
utf8:header('Content-Type:text/html;charset=utf-8');
注: すでに上記のメソッドに従っている場合でも、コードが文字化けしている場合は、メソッドが get であるかどうかを確認してください。get リクエスト (または URL によって渡されたパラメータ) の場合、渡されたパラメータは最初に encodeURIComponent メソッドによって処理される必要があります。 encodeURIComponent を使用しない場合も文字化けが発生します