Succes irevocabil php. Un exemplu simplu de utilizare a PHP și AJAX. „Ce înseamnă pentru tine succesul în viață?”

Un set de perechi cheie/valoare care configurează cererea AJAX. Toți parametrii sunt opționali. Este acceptabil, dar nu recomandat, să setați o valoare implicită pentru orice parametru folosind metoda $.ajaxSetup().
Metoda $.ajax() acceptă următorii parametri:

    acceptă (implicit: depinde de dataType ).

    Tip: PlainObject.
    Un set de perechi cheie/valoare care sunt trimise către Accept antetul cererii. Acest antet îi spune serverului ce fel de răspuns va accepta cererea ca răspuns. Rețineți că valoarea parametrului specificat în dataType (tipul de date pe care îl așteptăm de la server) este mapată la cea specificată în parametru. În plus, pentru a procesa corect răspunsul de la server, trebuie să specificați o funcție în parametrul convertoare care returnează valoarea răspunsului convertit. De exemplu: $.ajax(( acceptă : ( mycustomtype: "application/x-some-custom-type " ) , // specificați cum să procesați convertorii de răspuns: ( "text mycustomtype ": function ( rezultat) ( // returnează valoarea răspunsului convertit return newresult; ) ) , // Tipul de date așteptat ("mycustomtype") dataType : "mycustomtype" ) );

    asincron (implicit: true ).

    Tip: boolean.
    În mod implicit, toate solicitările sunt trimise asincron dacă trebuie să organizați cereri sincrone, apoi setați acest parametru la false . Rețineți că interogările pe mai multe domenii și un element al cărui parametru dataType este "jsonp" nu acceptă interogări în modul sincron. Vă rugăm să rețineți că, utilizând solicitări sincrone, puteți bloca temporar browserul prin dezactivarea oricăror acțiuni în timp ce solicitarea este activă.

    înainte de a trimite. Tip: Funcție (jqXHR jqXHR,PlainObject setări).
    O funcție de apel invers care va fi apelată înainte de efectuarea cererii AJAX. Funcția vă permite să schimbați obiectul jqXHR (în jQuery 1.4.x obiectul XMLHTTPRequest) înainte de a fi trimis. Obiectul jqXHR este un add-on care extinde obiectul XMLHttpRequest, obiectul conține multe proprietăți și metode care vă permit să obțineți informații mai complete despre răspunsul serverului, iar obiectul conține și metode Promise. Dacă funcția beforeSend returnează false , atunci cererea AJAX va fi anulată. Din versiune jQuery 1.5 funcția beforeSend va fi apelată indiferent de tipul cererii.

    cache (implicit: true, pentru dataType "scriptie"Și "jsonp" fals ).

    Tip: boolean.
    Dacă este setat la fals, acest lucru va face ca paginile solicitate să nu fie memorate în cache de browser. Rețineți că false va funcționa corect numai cu CAPȘi OBȚINE cereri.

    complet.

    Tip: Funcție (jqXHR jqXHR, șir textStatus).
    O funcție care este apelată când cererea se termină (funcția este executată după evenimentele AJAX "succes" sau "eroare"). Doi parametri sunt trecuți funcției: jqXHR(în obiectul jQuery 1.4.x XMLHTTPRequest) și o linie corespunzătoare stării cererii ( "succes", "nemodificat", "fara continut", "eroare", "pauză", "intrerupere de sarcina", sau "eroare de analiză"). De la jQuery 1.5, parametrul complet poate accepta o serie de funcții care vor fi apelate una câte una.

    continuturi.

    Tip: PlainObject.
    Un obiect format din perechi șir/regex care determină modul în care jQuery va procesa (parsa) răspunsul în funcție de tipul de conținut. Adăugat în jQuery 1.5.

    contentType (implicit: „application/x-www-form-urlencoded; charset=UTF-8”).

    Tip: boolean sau șir.
    Definește tipul de conținut care este specificat în cerere la trimiterea datelor către server. De la jQuery 1.6, este posibil să specificați valoarea false , caz în care jQuery nu trece câmpul din antet Tipul de conținut deloc.

    context.

    Tip: PlainObject.
    Când executați funcții de apel invers AJAX, contextul lor de execuție este obiectul fereastră. Parametrul context vă permite să configurați contextul de execuție a funcției astfel încât $(this ) să se refere la un anumit element DOM sau obiect. De exemplu: $.ajax(( url : "test.html ", context : $(".myClass "), // execuție nouă funcție context succes: function ()( // dacă cererea este cu succes, apelați funcția $ (this ).html ("Totul este ok" // adaugă conținut text la element cu class.myClass ) );

    convertoare

    Valori implicite:
    ( „* text „: window.String, // orice tip în text „text html”: adevărat, // text în html „text json”: jQuery.parseJSON, // text în JSON „text xml”: jQuery.parseXML // text în XML) Tip: PlainObject.
    Un obiect care conține tipul de date de convertit și cum să-l convertească. Valoarea fiecărui convertor este o funcție care returnează valoarea răspunsului convertit. Adăugat în jQuery 1.5.

    crossDomain (implicit: false pentru solicitările din același domeniu, adevărat pentru cererile pe mai multe domenii).

    Tip: boolean.
    Dacă doriți să faceți o solicitare pe mai multe domenii în timp ce vă aflați pe același domeniu (de exemplu, o solicitare jsonp), setați acest parametru la true . Acest lucru va permite, de exemplu, să redirecționați o solicitare către un alt domeniu de pe serverul dvs. Adăugat în jQuery 1.5.

    Tip: PlainObject, sau String sau Array.
    Date care vor fi trimise la server. Dacă nu sunt un șir, ele sunt convertite într-un șir de interogare. Pentru OBȚINE solicitări, șirul va fi adăugat la adresa URL. Pentru a preveni procesarea automată, puteți utiliza parametrul processData cu valoarea false . Dacă datele sunt transferate ca parte a unui obiect, atunci acestea trebuie să fie formate din perechi cheie/valoare. Dacă valoarea este o matrice, jQuery serializează mai multe valori cu aceeași cheie (în funcție de valoarea parametrului tradițional, care activează tipul de serializare tradițional bazat pe metoda $.param).

    dataFilter.

    Tip: Funcție (șir date, șir tip) => Orice .
    Funcția este apelată după finalizarea cu succes a unei solicitări AJAX și vă permite să procesați datele „brute” primite de la răspunsul serverului. Returul datelor trebuie să aibă loc imediat după procesare. Funcția ia două argumente: date- datele primite de la server sub formă de șir și tip- tipul acestor date (valoarea parametrului dataType).

    dataType (implicit: xml, json, scenariu, sau html).

    Tip: șir.
    Definește tipul de date pe care vă așteptați să le primiți de la server. Dacă tipul de date nu este specificat, atunci jQuery va încerca să-l determine pe baza tipului MIME din răspuns ( XML tip MIMA va avea ca rezultat XML, începând cu jQuery 1.4 json va da un obiect JavaScript, scenariu va executa scriptul și totul va fi returnat ca șir).

    Tipuri de bază (rezultatul este transmis ca prim argument la funcția de apel invers de succes):

    • „xml” - returnează XML document care poate fi redat folosind jQuery.
    • „html” - returnează HTML ca text simplu, etichetele vor fi procesate și executate odată ce sunt introduse în modelul obiect al documentului ( DOM).
    • "script" - evaluează răspunsul ca JavaScriptși îl returnează ca text simplu. Dezactivează stocarea în cache prin adăugarea parametrului _= la șirul de interogare, chiar dacă parametrul cache este adevărat. Aceasta va transforma metoda POST V OBȚINE pentru cereri pe mai multe domenii.
    • "json" - evaluează răspunsul ca JSONși returnează un obiect JavaScript. Între domenii "json" cererile sunt convertite în "jsonp", dacă jsonp nu este specificat în parametrii cererii: false . Date JSON sunt analizate într-o ordine strictă și trebuie să respecte formatul general acceptat, orice incorect JSON este respinsă și se aruncă o eroare. Începând cu jQuery 1.9, un răspuns gol nu este acceptat, serverul trebuie să returneze NULL sau () ca răspuns.
    • „jsonp” - încarcă datele în format JSON, folosind formatul de descărcare JSONP. Adaugă un parametru suplimentar „?callback=?” la final URL adrese pentru specificarea numelui funcției de gestionare. Dezactivează stocarea în cache prin adăugarea parametrului _= la URL adresa, chiar dacă parametrul cache este adevărat.
    • „text” este un șir de text obișnuit.
    • valori multiple - valorile sunt separate printr-un spațiu. Începând cu versiunea 1.5, jQuery poate converti tipul de date care este primit în Tipul de conținut al antetului în tipul de date de care aveți nevoie. De exemplu, dacă doriți ca un răspuns text să fie interpretat ca XML, utilizați „text XML” pentru acel tip de date. Puteți, de asemenea, să faceți o solicitare JSONP, să o primiți ca text și să o interpretați ca XML: „jsonp text XML” . Următoarea linie va face același lucru: „jsonp XML” , jQuery va încerca să facă conversia din JSONP V XML, după o încercare nereușită va încerca să convertească JSONPîn text, apoi din text în XML.
  • Tip: Funcție (jqXHR jqXHR, șir textStatus, șir errorThrown).
    O funcție de apel invers care este apelată dacă solicitarea AJAX nu a fost finalizată. Funcția primește trei argumente:

    • jqXHR- obiect jqXHR (în jQuery 1.4.x, obiect XMLHttpRequest).
    • textStatus- un șir care descrie tipul de eroare care a apărut. Valorile posibile (altele decât null) nu sunt "pauză", "eroare", "intrerupere de sarcina"Și "eroare de analiză".
    • errorThrown- obiect excepție suplimentar dacă a apărut. Când apare o eroare HTTP argumentul primește partea text a statului, de ex. "Nu a fost găsit", sau "Internal Server Error".
    Din versiune jQuery 1.5 Este permisă trecerea unei matrice de funcții ca valoare de parametru, iar fiecare funcție va fi apelată la rândul ei. Rețineți că acest handler nu este apelat pentru scripturi între domenii și solicitări JSONP.
  • global (implicit: true ).

    Tip: boolean.
    Un parametru boolean care determină dacă gestionatorii de evenimente AJAX globale pot fi apelați pentru această solicitare. Valoarea implicită este adevărată. Dacă trebuie să împiedicați apelarea unor handlere de evenimente globale, cum ar fi .ajaxStart() sau .ajaxStop(), atunci utilizați false .

    anteturi (implicit: ( ) ).

    Tip: PlainObject.
    Un obiect care conține perechi cheie/valoare de anteturi suplimentare de solicitare care urmează să fie trimise împreună cu cererea folosind obiectul XMLHttpRequest. Vă rugăm să rețineți că titlul X-Requested-With: XMLHttpRequest este întotdeauna adăugată, dar valoarea XMLHttpRequest poate fi modificată implicit folosind acest parametru. Valorile anteturilor pot fi înlocuite și de parametrul beforeSend. Adăugat în jQuery 1.5.

    ifModified (implicit: false).

    Tip: boolean.
    În mod implicit, valoarea este false , ignoră câmpurile antetului cererii HTTP și, când este setată la adevărat, cererea AJAX este transferată la starea de succes ( succes), numai dacă răspunsul de la server s-a schimbat de la ultima solicitare. Validarea se face prin verificarea câmpului antet Ultima modificare. Din versiune jQuery 1.4, pe lângă antetul Last-Modified, se bifează și „eticheta” ( eticheta de entitate) este un identificator privat atribuit de un server web unei anumite versiuni a unei resurse găsite la o adresă URL. Dacă conținutul resursei pentru această adresă se schimbă cu unul nou, este atribuit un nou etag.

    isLocal (implicit: depinde de locația curentă).

    Tip: boolean.
    Utilizați true pentru a defini mediul curent ca „local” (de exemplu, file:///url), chiar dacă jQuery nu îl recunoaște ca atare în mod implicit. Următoarele protocoale sunt în prezent recunoscute ca locale: fişier, *-extensieȘi widget. Dacă trebuie să modificați parametrul isLocal, se recomandă să faceți acest lucru o dată folosind funcția $.ajaxSetup(). Adăugat în jQuery 1.5.1.

    Tip: boolean sau șir.
    Ignoră numele funcției de apel invers în JSONP cerere. Această valoare va fi folosită în loc de „callback” ( "http://domain.ru/test.php?callback=?") ca parte a șirului de interogare din adresa URL. De exemplu, valoarea (jsonp: "onLoad") va fi transmisă serverului ca următorul șir de interogare „http://domain/test.php?onLoad=?”.
    Începând cu jQuery 1.5, setarea parametrului jsonp la false împiedică adăugarea șirului „?callback” la adresa URL sau încearcă să folosească „=?”. În acest caz, trebuie să specificați suplimentar valoarea parametrului jsonpCallback, de exemplu: ( jsonp : false , jsonpCallback : "callbackName " ) Din motive de securitate, dacă nu aveți încredere în ținta solicitărilor dvs. AJAX, atunci este recomandat să setați valoarea parametrului jsonp la false .

    jsonpCallback.

    Tip: șir sau funcție.
    Specifică numele funcției de apel invers pentru JSONP cerere. Această valoare va fi folosită în locul unui nume aleator care este generat și atribuit automat de jQuery. Se recomandă ca jQuery să genereze propriul nume unic, acest lucru va facilita gestionarea cererilor și gestionarea eventualelor erori. În unele cazuri, setarea propriului nume de funcție va îmbunătăți stocarea în cache a browserului OBȚINE cereri.
    De la jQuery 1.5, puteți specifica o funcție ca valoare a parametrului jsonpCallback. În acest caz, valoarea parametrului jsonpCallback trebuie setată la valoarea returnată a acestei funcții.

    metoda (implicit: "OBȚINE").

    Tip: șir.
    Metodă HTTP, folosit pentru interogare (de exemplu, "POST", "OBȚINE", "A PUNE"). Adăugat în jQuery 1.9.0.

    mimeType.

    Tip: șir.
    Un tip MIME care suprascrie tipul MIME implicit specificat în obiectul XHR. Adăugat în jQuery 1.5.1.

    parola.

    Tip: șir.
    Parola care trebuie utilizată cu XMLHttpRequest în răspunsul la cererea de autentificare a accesului HTTP.

    processData (implicit: true).

    Tip: boolean.
    În mod implicit, datele transmise parametrului de date ca obiect vor fi procesate și convertite într-un șir de interogare adecvat tipului de date implicit „application/x-www-form-urlencoded”. Dacă trebuie să trimiteți DOMDocument sau alte date neprocesate, setați acest parametru la false .

    scriptCharset.

    Tip: șir.
    Setează atributul set de caractere (codificarea caracterelor) la eticheta HTML utilizată în cerere. Folosit atunci când codarea de pe pagină diferă de codificarea scriptului de la distanță. Vă rugăm să rețineți că parametrul scriptCharset se aplică numai solicitărilor între domenii cu un parametru de tip cu valoarea "OBȚINE"(implicit) și parametru dataType cu valoare "jsonp", sau "scriptie".

    statusCode (implicit: ( ) ).

    Tip: PlainObject.
    Obiect coduri numerice HTTPși funcții care vor fi apelate atunci când codul de răspuns al serverului are valoarea corespunzătoare (un cod specific HTTP). De exemplu, următoarea funcție va fi apelată dacă se primește un cod de răspuns de la server 404 , sau "Nu a fost găsit"(codul de răspuns standard HTTP care indică faptul că clientul a putut comunica cu serverul, dar serverul nu a putut găsi datele așa cum a fost solicitat.): $.ajax(( statusCode : ( 404: function ()( // execută funcția dacă HTTP cod de răspuns 404 alert("pagina nu a fost găsită" , 403: function ()( // execută funcția dacă codul de răspuns HTTP este 403 alert("acces refuzat "); ) ) );

    succes.

    Tip: Funcție (Orice date, șir textStatus, jqXHR jqXHR).
    O funcție de apel invers care este apelată dacă cererea AJAX are succes. Funcției primesc trei argumente:

    • date- datele returnate de la server. Datele sunt formatate conform parametrilor dataType sau dataFilter, dacă sunt specificati
    • textStatus- un șir care descrie starea cererii.
    • jqXHR- obiect jqXHR (până la versiunea jQuery 1.4.x obiect XMLHttpRequest).
    Din versiune jQuery 1.5 Este permisă trecerea unei matrice de funcții ca valoare a parametrului, iar fiecare funcție va fi apelată la rândul ei.
  • pauză.

    Tip: Număr.
    Se instalează în milisecunde cerere de expirare. Sens 0 înseamnă că nu a fost setat niciun timeout. Vă rugăm să rețineți că acest parametru suprascrie valoarea timeout setată folosind funcția $.ajaxSetup(). Timpul de așteptare începe în momentul în care este apelată metoda $.ajax().

    tradiţional.

    Tip: boolean.
    Dacă intenționați să utilizați opțiunile tradiționale de serializare (potrivite pentru utilizare în string URL cerere sau cerere AJAX), apoi setați valoarea acestui parametru la true .

    tip (implicit: "OBȚINE").

    Tip: șir.
    Un alias pentru parametrul de metodă. Ar trebui să utilizați tip dacă utilizați versiuni jQuery înainte de 1.9.0.

    url (implicit: pagina curenta).

    Tip: șir.
    O linie care contine URL adresa la care se trimite cererea.

    nume de utilizator.

    Tip: șir.
    Numele de utilizator care va fi utilizat cu XMLHttpRequest în răspunsul la cererea de autentificare a accesului HTTP.

    xhr (implicit: ActiveXObject, atunci când sunt disponibile ( Internet Explorer), în alte cazuri XMLHttpRequest .

    Tip: Function() .
    Apel invers pentru a crea un obiect XMLHttpRequest. Cu acest parametru, puteți suprascrie obiectul XMLHttpRequest pentru a vă oferi propria implementare.

    xhrFields.

    Tip: PlainObject.
    Un obiect care conține perechi field_name:field_value care vor fi setate la obiectul XHR. De exemplu, puteți defini dacă cererile pe mai multe domenii trebuie create folosind acreditări precum prăjitură, anteturi de autorizare sau certificate TLS: $.ajax(( url : "cross_domain_url ", // adresa la care va fi trimisă cererea xhrFields : ( withCredentials: true // suportat în jQuery 1.5.1 + ) ) );

AJAX este un grup de tehnologii care este utilizat în dezvoltarea web pentru a crea aplicații interactive. AJAX vă permite să transferați date de pe server fără a reîncărca pagina. Astfel poți obține rezultate foarte impresionante. Și biblioteca jQuery simplifică foarte mult implementarea AJAX folosind metode încorporate.

Pentru a implementa tehnologia, utilizați metoda $.ajax sau jQuery.ajax:

$.ajax(proprietăți) sau $.ajax(url [, proprietăți])

Al doilea parametru a fost adăugat în versiunea 1.5 a jQuery.

url - adresa paginii solicitate;

proprietăți - solicitați proprietăți.

Pentru o listă completă de opțiuni, consultați documentația jQuery.

În acest tutorial folosim câțiva dintre cei mai des utilizați parametri.

succes (funcție) - această funcție este apelată după ce cererea a fost finalizată cu succes. Funcția primește de la 1 la 3 parametri (în funcție de versiunea bibliotecii utilizate). Dar primul parametru conține întotdeauna datele returnate de la server.

date (obiect/șir) - date utilizator care sunt transmise paginii solicitate.

dataType (șir) - valori posibile: xml, json, script sau html. Descrierea tipului de date care este așteptat în răspunsul serverului.

tip (șir) - tip cerere. Valori posibile: GET sau POST. Implicit: GET.

url (șir) - URL pentru cerere.

Exemplul 1

Transfer ușor de text.

$.ajax(( url: "response.php?action=sample1", succes: function(data) ( $(".rezults").html(data); ) ));

Există un element div .result pentru răspuns.

In asteptarea unui raspuns

Serverul returnează pur și simplu șirul:

Echo „Exemplu 1 - transfer finalizat cu succes”;

Exemplul 2

Transmitem datele utilizatorului către scriptul PHP.

$.ajax(( tip: "POST", url: "response.php?action=sample2", date: "name=Andrew&nickname=Aramis", succes: function(data)( $(".results").html( date);

Serverul returnează un șir cu datele transmise introduse în el:

Echo "Exemplu 2 - transfer finalizat cu succes. Parametri: nume = " . $_POST[„nume”] . ", porecla= " . $_POST[„nickname”];

Exemplul 3

Trecerea și executarea codului JavaScript

$.ajax(( dataType: „script”, url: „response.php?action=sample3”, ))

Serverul execută codul:

Echo "$(".rezultate").html("Exemplu 3 - Executarea JavaScript");";

Exemplul 4

Folosim XML. Exemplul poate fi folosit pentru a lucra cu XML extern, de exemplu, un flux RSS.

$.ajax(( dataType: "xml", url: "response.php?action=sample4", succes: function(xmldata)( $(".results").html(""); $(xmldata).find ("articol").each(function())( $(" ").html($(this).text()).appendTo(".results"); ) ));

Serverul ar trebui să returneze codul XML:

Antet ("Content-Type: application/xml; charset=UTF-8"); ecou adevărat); // dacă $date nu sunt specificate $răspuns = array("success" => true, "data" => $date); // dacă este specificat $date

Utilizarea wp_send_json_success($date, $status_code); $date (șir/matrice/număr/obiect/boolean) Datele care vor fi adăugate la rezultat în elementul de matrice de date înainte de a fi codificate în JSON.
Implicit: nu$status_code (număr) Cod de stare HTTP de setat. Care sunt codurile de stare? C WP 4.7.
Implicit: nul Exemplele #1 Determinarea procesării cu succes a unei cereri AJAX

Acest cod jQuery trimite o solicitare AJAX la fișierul plugin ajax/save_field.php:

JQuery(document).ready(function($)( $("#btn_save").click(function(e)( e.preventDefault(); $.post(pluginUrl + "ajax/save_field.php", $("); #my-form").serialize(), function(json)( if(json.success) alert(json.data.message); else alert("Eroare" + json.data); )); )); ) );

Acesta este codul din fișierul save_field.php care procesează cererea trimisă. Iată cum se utilizează wp_send_json_success() :