Tutorial PHP Ajax cu exemplu

⚡ Rezumat inteligent

Ajax în PHP permite unei pagini web să schimbe cantități mici de date cu serverul și să actualizeze o parte a paginii fără o reîncărcare completă. Această demonstrație construiește un framework de căutare live, explicând abordarea clasică XMLHttpRequest și alternativa modernă Fetch API.

  • 🔄 Ce este Ajax: Ajax, asincron JavaScript și XML actualizează o parte a unei pagini prin schimbul de date cu serverul fără o reîmprospătare completă.
  • ⚡ De ce să-l folosești: Ajax oferă funcții bogate, asemănătoare desktop-urilor, cum ar fi completarea automată, validarea live și meniurile derulante dependente.
  • 🖥️ Client și server: JavaScriptul rulează în browser și apelează un script PHP, care returnează doar datele necesare pentru actualizarea paginii.
  • 🔍 Căutare live: Un handler onkeyup trimite fiecare apăsare de tastă către un script PHP care returnează instantaneu nume de framework-uri corespunzătoare.
  • 📜 Cerere XMLHttp: Abordarea clasică creează un obiect XMLHttpRequest și citește responseText când cererea se finalizează.
  • 🆕 API-ul de preluare: Codul modern înlocuiește XMLHttpRequest cu funcția fetch bazată pe promisiuni pentru cereri mai curate și mai ușor de citit.
  • 🤖 Asistență AI: Instrumentele de inteligență artificială pot converti codul XMLHttpRequest vechi în cod fetch sau axios și pot ajuta la depanarea cererilor Ajax care eșuează.

PHP Ajax

Ce este Ajax?

AJAX înseamnă Asincron JavaScenariu & XML. Este o tehnologie care reduce interacțiunile dintre server și client. Realizează acest lucru prin actualizarea doar a unei părți a unei pagini web, nu a întregii pagini. Interacțiunile asincrone sunt inițiate de JavaScript. Scopul AJAX este de a schimba cantități mici de date cu serverul fără o reîmprospătare a paginii.

JavaScenariu este un limbaj de scripting pe partea de client. Este executat pe partea de client de către browsere web care acceptă JavaScenariul. JavaCodul de script funcționează numai în browserele care au JavaScriptul activat.

XML este acronimul pentru Extensible Markup Language (Limbaj de marcare extensibil). Este utilizat pentru a codifica mesaje atât în ​​formate lizibile de om, cât și de mașină. Este similar cu HTML, dar vă permite să creați propriile etichete personalizate. Pentru mai multe detalii despre XML, consultați articolul despre XML.

De ce să folosiți AJAX?

  • Permite dezvoltareaping aplicații web bogate și interactive, la fel ca aplicațiile desktop.
  • Validarea poate fi efectuată pe măsură ce utilizatorul completează un formular, fără a-l trimite. Acest lucru se poate realiza folosind completarea automată. Cuvintele pe care le tastează utilizatorul sunt trimise serverului pentru procesare, iar serverul răspunde cu cuvinte cheie care corespund cu ceea ce a introdus utilizatorul.
  • Poate fi folosit pentru a popula o casetă derulantă în funcție de valoarea unei alte casete derulante.
  • Datele pot fi preluate de pe server și doar o anumită parte a paginii poate fi actualizată fără a încărca întreaga pagină. Acest lucru este foarte util pentru părțile paginii web care încarcă lucruri precum:
    • Tweets
    • Comentarii
    • Utilizatori care vizitează site-ul și date live similare.

Cum se creează o aplicație PHP Ajax

Vom crea o aplicație simplă care permite utilizatorilor să caute cadre populare PHP MVC.

Aplicația noastră va avea o casetă de text în care utilizatorii vor introduce numele framework-urilor.

Apoi vom folosi AJAX pentru a căuta o potrivire, apoi vom afișa numele complet al framework-ului chiar sub formularul de căutare.

Pasul 1) Crearea paginii de index

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>

AICI,

  • „onkeyup="showName(this.value)”” execută JavaFuncția de script showName de fiecare dată când se tastează o tastă în caseta de text. Această caracteristică se numește completare automată.

Pasul 2) Crearea paginii de cadre

cadre.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;

?>

Pasul 3) Crearea scriptului 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();

}

AICI,

  • „if (str.length == 0)” verifică lungimea șirului de caractere. Dacă este 0, atunci restul scriptului nu este executat.
  • „dacă (window.XMLHttpRequest)…” Versiunile 5 și 6 de Internet Explorer utilizează ActiveXObject pentru implementarea AJAX. Alte versiuni și browsere precum Chrome și Firefox utilizați XMLHttpRequest. Acest cod asigură că aplicația noastră funcționează atât în ​​IE 5 și 6, cât și în browserele moderne.
  • „xmlhttp.onreadystatechange=function…” verifică dacă interacțiunea AJAX este completă și dacă statusul este 200, apoi actualizează intervalul txtName cu rezultatele returnate.

Pasul 4) Testarea aplicației noastre PHP Ajax

Presupunând că ați salvat fișierul index.php în phptuts/ajax, navigați la URL http://localhost/phptuts/ajax/index.php

Testarea aplicației noastre PHP Ajax

Tastați litera C în caseta de text. Veți obține următoarele rezultate.

Testarea aplicației noastre PHP Ajax

Exemplul de mai sus demonstrează conceptul AJAX și cum ne poate ajuta să creăm aplicații bogate și interactive.

AJAX modern cu API-ul Fetch

Obiectul XMLHttpRequest de mai sus încă funcționează, dar ramura sa ActiveXObject pentru vechiul Internet Explorer nu mai este necesară. Browserele moderne oferă API-ul Fetch bazat pe promisiuni, care face aceeași solicitare cu mult mai puțin cod.

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;
        });
}

Această versiune face aceeași treabă: trimite textul tastat către frameworks.php și plasează răspunsul în intervalul txtName. De asemenea, folosește encodeURIComponent pentru a evada în siguranță intrarea, iar lanțul său de promisiuni este ușor de extins cu gestionarea erorilor folosind un bloc catch.

Întrebări frecvente

O cerere sincronă blochează browserul până când serverul răspunde, blocând pagina. O cerere asincronă rulează în fundal, astfel încât pagina rămâne receptivă și se actualizează atunci când sosesc datele. Ajax utilizează modelul asincron.

Cu ajutorul funcției fetch, transmiteți o a doua metodă de setare a argumentelor către POST și un corp al funcției, apoi citiți $_POST în PHP. Cu XMLHttpRequest, apelați open('POST', url), setați antetul Content-Type și trimiteți datele codificate.

CORS, Cross-Origin Resource Sharing, blochează cererile browserului către un domeniu diferit, cu excepția cazului în care serverul respectiv trimite antetul Access-Control-Allow-Origin corect. Adăugați antetul pe partea PHP sau apelați o funcție same-origin. URL să o rezolvăm.

Da. Inserați codul XMLHttpRequest, iar inteligența artificială îl poate rescrie folosind API-ul fetch bazat pe promisiuni sau axios, poate adăuga gestionarea erorilor și poate păstra același comportament. Testați rezultatul, deoarece gestionarea răspunsurilor diferă ușor.

Da. Partajați codul solicitării și eroarea consolei browserului sau a rețelei, iar inteligența artificială poate detecta o eroare greșită. URL, un bloc CORS, un parametru lipsă sau o eroare de server, apoi sugerați soluția de încercat.

Rezumați această postare cu: