PHP Ajax チュートリアルと例

⚡ スマートサマリー

PHPのAjaxを使うと、Webページはサーバーと少量のデータをやり取りし、ページ全体を再読み込みすることなくページの一部を更新できます。このチュートリアルでは、ライブフレームワーク検索を構築し、従来のXMLHttpRequest方式と最新のFetch API方式について説明します。

  • 🔄 Ajaxとは何か: Ajax、非同期 JavaスクリプトとXMLは、ページ全体を更新することなく、サーバーとデータを交換することでページの一部を更新します。
  • ⚡ 使用する理由: Ajaxは、オートコンプリート、リアルタイム検証、連動ドロップダウンなど、デスクトップのようなリッチな機能を実現します。
  • 甘いもの<XNUMXxXNUMX><XNUMXxXNUMX><XNUMXxAXNUMX><XNUMXxAXNUMX>️️ クライアントとサーバー: Javaこのスクリプトはブラウザ上で実行され、PHPスクリプトを呼び出します。PHPスクリプトは、ページを更新するために必要なデータのみを返します。
  • 🔍 ライブ検索: onkeyupハンドラは、各キーストロークをPHPスクリプトに送信し、そのスクリプトは一致するフレームワーク名を即座に返します。
  • 📜 XMLHttpRequest: 従来の方法では、XMLHttpRequestオブジェクトを作成し、リクエストが完了したときにresponseTextを読み取ります。
  • 🆕 フェッチAPI: 最新のコードでは、XMLHttpRequestをPromiseベースのfetch関数に置き換えることで、より簡潔で読みやすいリクエストを実現しています。
  • 🤖 AIアシスト: AIツールは、古いXMLHttpRequestコードをfetchやaxiosに変換し、失敗したAjaxリクエストのデバッグを支援することができます。

PHP Ajax

アヤックスとは?

AJAX 非同期 Javaスクリプト および XML。これは、サーバーとクライアント間のやり取りを減らす技術です。これは、Web ページ全体ではなく、Web ページの一部のみを更新することによって実現されます。非同期のやり取りは、 Javaスクリプト。AJAXの目的は、ページをリロードせずに少量のデータをサーバーとやり取りすることです。

Javaスクリプト クライアントサイドスクリプト言語です。クライアント側で、をサポートするWebブラウザによって実行されます。 Java脚本。 Javaスクリプトコードは、 Javaスクリプトが有効になりました。

XML XMLはExtensible Markup Languageの略です。人間が読める形式と機械が読める形式の両方でメッセージをエンコードするために使用されます。HTMLに似ていますが、独自のカスタムタグを作成できます。XMLの詳細については、次の記事を参照してください。 XML.

AJAX を使用する理由

  • 開発を可能にするping デスクトップアプリケーションと同様に、リッチでインタラクティブなWebアプリケーション。
  • ユーザーがフォームに入力する際に​​、送信せずに検証を行うことができます。これはオートコンプリート機能を使用することで実現できます。ユーザーが入力した単語は処理のためにサーバーに送信され、サーバーはユーザーが入力した内容に一致するキーワードを応答として返します。
  • 別のドロップダウンボックスの値に応じて、別のドロップダウンボックスに値を入力するように使用できます。
  • サーバーからデータを取得し、ページ全体を読み込むことなく、ページの一部のみを更新できます。これは、次のようなものを読み込むウェブページの一部に非常に便利です。
    • つぶやき
    • コメント
    • サイトを訪問したユーザー、および同様のリアルタイムデータ。

PHP Ajaxアプリケーションの作成方法

ユーザーが人気のある PHP MVC フレームワークを検索できるシンプルなアプリケーションを作成します。

私たちのアプリケーションには、ユーザーがフレームワークの名前を入力するテキストボックスがあります。

次に、AJAXを使用して一致するものを検索し、検索フォームのすぐ下にフレームワークの完全な名前を表示します。

ステップ1) インデックスページの作成

index.phpを

<html>

<head>

<title>PHP MVC Frameworks - Search Engine</title>

<script type="text/javascript" src="auto_complete.js"></script>

</head>

<body>

<h2>PHP MVC Frameworks - Search Engine</h2>

<p><b>Type the first letter of the PHP MVC Framework</b></p>

<form method="POST" action="index.php">

<p><input type="text" size="40" id="txtHint" onkeyup="showName(this.value)"></p>

</form>

<p>Matches: <span id="txtName"></span></p>

</body>

</html>

ここに、

  • “onkeyup=”showName(this.value)””は、 Javaテキストボックスにキーが入力されるたびに、スクリプト関数 showName が実行されます。この機能はオートコンプリートと呼ばれます。

ステップ 2) フレームワーク ページの作成

フレームワーク.php

<?php

$frameworks = array("CodeIgniter","Zend Framework","Cake PHP","Kohana") ;

$name = $_GET["name"];

if (strlen($name) > 0) {

$match = "";

for ($i = 0; $i < count($frameworks); $i++) {

if (strtolower($name) == strtolower(substr($frameworks[$i], 0, strlen($name)))) {

if ($match == "") {

$match = $frameworks[$i];

} else {

$match = $match . " , " . $frameworks[$i];

}

}

}

}

echo ($match == "") ? 'no match found' : $match;

?>

ステップ3) JSスクリプトの作成

auto_complete.js

function showName(str){

if (str.length == 0){ // exit function if nothing has been typed in the textbox

document.getElementById("txtName").innerHTML=""; // clear previous results

return;

}

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

} else {// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function() {

if (xmlhttp.readyState == 4 && xmlhttp.status == 200){

document.getElementById("txtName").innerHTML=xmlhttp.responseText;

}

}

xmlhttp.open("GET","frameworks.php?name="+str,true);

xmlhttp.send();

}

ここに、

  • 「if (str.length == 0)」は文字列の長さをチェックします。長さが0の場合は、スクリプトの残りの部分は実行されません。
  • 「if (window.XMLHttpRequest)…」Internet Explorer バージョン 5 および 6 は、AJAX の実装に ActiveXObject を使用します。Chrome や Firefox XMLHttpRequestを使用します。このコードにより、アプリケーションがIE 5および6と最新のブラウザの両方で動作することが保証されます。
  • 「xmlhttp.onreadystatechange=function…」は、AJAX のやり取りが完了し、ステータスが 200 であるかどうかを確認し、返された結果で txtName span を更新します。

ステップ 4) PHP Ajax アプリケーションをテストする

index.php ファイルを phptuts/ajax に保存したと仮定して、 URL http://localhost/phptuts/ajax/index.php

PHP Ajax アプリケーションのテスト

テキストボックスに「C」と入力してください。以下の結果が表示されます。

PHP Ajax アプリケーションのテスト

上記の例は、AJAXの概念と、それがどのようにしてリッチでインタラクティブなアプリケーションの作成に役立つかを示しています。

Fetch API を使用した最新の AJAX

上記の XMLHttpRequest オブジェクトは今でも機能しますが、古い Internet Explorer 用の ActiveXObject ブランチはもはや必要ありません。最新のブラウザは、Promise ベースの Fetch API を提供しており、これを使用するとはるかに少ないコードで同じリクエストを実行できます。

function showName(str) {
    if (str.length === 0) {
        document.getElementById("txtName").innerHTML = "";
        return;
    }
    fetch("frameworks.php?name=" + encodeURIComponent(str))
        .then(response => response.text())
        .then(text => {
            document.getElementById("txtName").innerHTML = text;
        });
}

このバージョンも同様の処理を行います。入力されたテキストを frameworks.php に送信し、その応答を txtName スパンに格納します。また、encodeURIComponent を使用して入力を安全にエスケープし、catch ブロックを使用してエラー処理を追加することで、プロミスチェーンを簡単に拡張できます。

よくあるご質問

同期リクエストは、サーバーからの応答があるまでブラウザをブロックし、ページをフリーズさせます。一方、非同期リクエストはバックグラウンドで実行されるため、ページは応答性を維持し、データが到着すると更新されます。Ajaxは非同期モデルを採用しています。

fetch を使用する場合は、2 番目の引数として POST にメソッドとボディを設定し、PHP で $_POST を読み取ります。XMLHttpRequest を使用する場合は、open('POST', url) を呼び出し、Content-Type ヘッダーを設定して、エンコードされたデータを送信します。

CORS(クロスオリジンリソース共有)は、サーバーが適切な Access-Control-Allow-Origin ヘッダーを送信しない限り、異なるドメインへのブラウザのリクエストをブロックします。PHP 側でヘッダーを追加するか、同一オリジンを呼び出してください。 URL それを修正する。

はい。XMLHttpRequestのコードを貼り付けると、AIがPromiseベースのfetch APIまたはaxiosを使用して書き換え、エラー処理を追加し、同じ動作を維持します。レスポンスの処理方法が若干異なるため、結果をテストしてください。

はい。リクエストコードとブラウザのコンソールまたはネットワークエラーを共有すれば、AIが間違いを検出できます。 URLCORSブロック、パラメータの欠落、またはサーバーエラーが発生した場合は、試すべき修正方法を提案します。