#PHP は、Ajax リクエストであるかどうかを判断します
Ajax リクエストを送信するときは、XMLHttpRequest オブジェクトを通じてカスタム ヘッダー情報を作成できます。jquery フレームワークでは、$.ajax、$.get、または $.post メソッドを通じて Web コンテンツをリクエストすると、HTTP_X_REQUESTED_WITH パラメータが次のようになります。 PHP では、Ajax リクエストであるかどうかはヘッダーレベルで判断され、$_SERVER['HTTP_X_REQUESTED_WITH'] に基づいて判断されます。通常の状況では、$_SERVER
['HTTP_X_REQUESTED_WITH']デフォルトは
XMLHttpRequest ですが、$_SERVER['HTTP_X_REQUESTED_WITH'] は、
XMLHttpRequest.setRequestHeader(name, value) を使用してカスタマイズすることもできます。 )。
関連する学習の推奨事項:例: フロントエンド ページは、通常の Ajax リクエストをバックエンド テスト.php。php プログラミング (ビデオ)
$.ajax({ type: "GET", url: 'test.php', success: function(data) { console.log(data); } });
function isAjax() { return @$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ? true : false; } if (isAjax()) { echo 'Ajax Request Success.'; } else { echo 'No.'; }
Ajax は JSONP クロスドメイン リクエストを開始します
jQuery の JSONP メソッドを通じてクロスドメイン Ajax リクエストを実装できます。サーバー側の PHP もそれに応じて処理する必要があります。つまり、PHP 側は、次のような特定の形式でデータをリクエストして返す必要があります。フロントエンドページ。 例: フロントエンド ページが JSONP リクエストを開始します:$.ajax({ type: "get", data: "random="+Math.random(), url: "http://demo.jb51.net/phpajax/jsonp.php", dataType: "jsonp", jsonp: "callback", success: function(data) { console.log(data); }, error: function() { console.log('Request Error.'); } });
jQuery.getJSON('http://demo.jb51.net/phpajax/jsonp.php?callback=?",{ random: Math.random() }, function(data){ console.log(data); });
$data = array( 'rand' => $_GET['random'], 'msg' => 'Success' ); echo $_GET['callback'].'('.json_encode($data).')';
Ajax クロスドメイン リクエスト: CORS
CORS (クロスドメインとも呼ばれます)リソース共有、英語の正式名は Cross-Origin Resource Sharing です。 Ajax を使用して、a.com のページから b.com のページにデータをリクエストするとします。通常、同一生成元ポリシーにより、この種のリクエストは許可されず、ブラウザーも「」を返します。ソース不一致」エラー。そのため「クロスドメイン」という用語が使われています。しかし、私たちにも解決策があります。b.com のページのヘッダー情報にコード行を追加できます:header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Origin: https://www.jb51.net");
$.ajax({ type: "get", data: "random="+Math.random(), url: "http://demo.jb51.net/phpajax/ajax.php", dataType: "json", success: function(data) { console.log(data); $("#result_3").html(data.msg+':'+data.rand); }, error: function() { $("#result_3").html('Request Error.'); } });
header("Access-Control-Allow-Origin: https://www.jb51.net"); $data = array( 'rand' => $_GET['random'], 'msg' => 'Success' ); echo json_encode($data);
関連ビデオの推奨事項:
以上がAjax リクエストを処理する PHP の問題と Ajax クロスドメインの問題を解決するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。