ホームページ  >  記事  >  バックエンド開発  >  PHP はリクエストが ajax リクエストであるか通常のリクエストであるかを判断します

PHP はリクエストが ajax リクエストであるか通常のリクエストであるかを判断します

伊谢尔伦
伊谢尔伦オリジナル
2016-12-02 09:44:381058ブラウズ

/path/to/pkphp.com/script.php?ajax
PHP スクリプトで次のメソッドを使用して決定します:
コードは次のとおりです:
if(isset($_GET['ajax'])) {
...これは ajax リクエストです、それでは...
}
else {
...これは ajax リクエストではありません、それでは...
}

Web ページリクエストの判断は、 _GET パラメータ。しかし、そのような機能が必要な場合、この方法には欠点があるかもしれません。 ajax を介して要求される Web ページは、ユーザーの操作の便宜を図るためのものであり、ajax によって要求される Web ページのコンテンツが比較的簡略化されて使用されている点と、大きなフレームが使用されている点を除いて、2 つのメソッドで要求される Web ページの必要なコンテンツは同じです。 Web ページのテンプレートが削除されます。
3. この目的は、ユーザーが ajax を介して Web ページを操作し、検索エンジンが Web ページにアクセスすると (通常の Web ページを開くのと同等)、取得されるコンテンツは完全な Web ページです (大きなサイズのものも含む)。 Web ページのフレーム テンプレート)。
上記の機能を完了するには、先ほど紹介したGETパラメータの受け渡しを使用して判定することはできません。GETの受け渡しを使用して判定を行うと、リンクを提供できないため、ユーザーのajaxリクエストと通常のWebページのリクエストは同じ内容になります。 ajax判定パラメータあり、なしのURLを設定します。では、この機能をどのように実装すればよいのでしょうか?この問題はサーバー側のPHP判断で解決する必要があります。つまり、今日お話しするのは、PHP が ajax リクエストをどのように判断するかということです。この問題を解決するには前提条件があります。それは、使用する ajax フレームワークが jquery である必要があるということです。 jquery フレームワークでは、$.ajax、$.get、または $.post メソッドを通じて Web コンテンツをリクエストするときに、HTTP_X_REQUESTED_WITH パラメータをサーバーに渡します。次のメソッドを使用して、リクエストが ajax リクエストであるかどうかを判断できます。または、通常のリクエスト:
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strto lower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
.. これは ajax リクエストです。 ...
}
else {
..これは Ajax リクエストではありません。すると...
}
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strto lower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')if( isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strto lower($_SERVER['HTTP_X_REQUESTED_WITH
{
...これは Ajax リクエストです、そして...
}
else {
...これは ajax リクエストではないので...
}
これを使用して判定操作を行うと、Web ページ上の URL の一貫性を保ちながら、2 つの異なるリクエストに対して異なる内容の Web ページを取得できるため、検索に影響を与えることなくユーザー操作の最適化を実現できます。
ここで注意すべきもう 1 つの問題は、jquery リクエストが iframe 経由で Web ページを開く場合、HTTP_X_REQUESTED_WITH パラメーターが渡されないことです。つまり、リクエストを判断する方法がありません。

主な内容は次のとおりです:

1. この問題を解決するには、使用する ajax フレームワークが $.ajax である必要があります。 、または Web コンテンツをリクエストするときに $.post メソッドを使用すると、HTTP_X_REQUESTED_WITH パラメーターがサーバーに渡されます。次のメソッドを使用して、リクエストが Ajax リクエストであるか通常のリクエストであるかを判断できます:
if(isset($_SERVER[' HTTP_X_REQUESTED_WITH']) && strto lower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{

2. jquery リクエストが iframe 経由で Web ページを開く場合、注意が必要な別の問題があります。の場合、HTTP_X_REQUESTED_WITH パラメーターは渡されません。つまり、リクエストのタイプを判断する方法がありません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。