Slanje ajax zahtjeva na drugu domenu. Ajax zahtjevi između domena i kakve veze ima php Ajax drugom poslužitelju s tim

💖 Sviđa li vam se? Podijelite vezu sa svojim prijateljima
niz DOBITI

HTTP metoda za prijenos podataka prilikom izvršavanja zahtjeva. Obično se koriste GET ili POST. Također možete koristiti metode PUT i DELETE, ali to se ne preporučuje jer ih ne podržavaju svi preglednici.

$.ajax(( //... tip: "POST", //... ));

url niz Trenutna stranica

$.ajax(( //... url: "/put/do/skripte", //... ));

podaci niz | objekt

Podaci poslani uz zahtjev poslužitelju. Oni se pretvaraju u niz upita i, prema zadanim postavkama, nužno su kodirani u obliku sličnom URL-u (parametar je odgovoran za automatsko kodiranje u format URL-a).

Niz se dodaje URL upitnom nizu ako je zahtjev napravljen korištenjem metode GET. Ako se zahtjev izvodi metodom POST, tada se podaci prenose u tijelu zahtjeva.

$.ajax(( //... podaci: "vrijednost1=1&vrijednost2=2&vrijednost3=3", //... ));

Ako je dani parametar objekt kao skup parova property_name/value, a vrijednost je niz, tada jQuery serijalizira objekt u niz višestrukih vrijednosti s istim ključem.

(Foo: ["bar1", "bar2"])

&Foo=traka1&Foo=traka2

asinkroni Booleov pravi

Oznaka za izvršavanje asinkronih zahtjeva.

$.ajax(( //... async: false, //... ));

tip podataka niz Niz koji navodi naziv tipa podataka koji se očekuje u odgovoru poslužitelja. Ako tip podataka nije naveden, jQuery ga sam pokušava odrediti, na temelju MIME tipa odgovora poslužitelja. Važeće vrijednosti: xml, html, skripta, json, jsonp, tekst. (Ovo je neophodno za definiranje metode za obradu podataka primljenih u odgovoru na zahtjev od strane funkcije dataFilter prije nego što se proslijede funkciji uspješnog povratnog poziva.) predmemorija Booleov pravi

Oznaka predmemoriranja odgovora.

Zadana vrijednost je true za tipove podataka text, xml, html, json. Za tipove podataka script i jsonp zadana vrijednost je false.

contentType niz aplikacija/x-www-form-urlencoded Vrsta sadržaja u zahtjevu (prilikom slanja podataka na poslužitelj). kontekst objekt Ovaj će objekt postati kontekst (this) za sve funkcije povratnog poziva povezane s ovim ajax zahtjevom (na primjer, za funkcije uspjeha ili pogreške) $.ajax(( url: "test.html", context: document.body, success: funkcija ()( $(ovo).addClass("gotovo"); ) )); globalno Booleov pravi Pozivanje globalnih rukovatelja događajima u različitim fazama ajax zahtjeva, na primjer, funkcije ajaxStart ili ajaxStop ifModified Booleov lažno

Ako je postavljeno na true , zahtjev se smatra uspješnim samo ako su se podaci u odgovoru promijenili od zadnjeg zahtjeva (jQuery utvrđuje podudara li se komponenta u predmemorije preglednika s onim što je na poslužitelju provjeravanjem zaglavlja Last-Modified s datumom posljednje izmjene sadržaja, au jQuery 1.4 provjerava se i Etag zaglavlje - niz s verzijom komponente). Zadana vrijednost je false, tj. Uspjeh zahtjeva ne ovisi o zaglavljima ili promjenama u odgovoru.

Korisničko ime niz

Korisničko ime koje će se koristiti za HTTP autorizaciju na poslužitelju.

lozinka niz Lozinka koja će se koristiti kao odgovor na HTTP autorizacijski zahtjev na poslužitelju. processData Booleov pravi

Podaci proslijeđeni poslužitelju u parametru pretvaraju se u niz upita s tipom sadržaja Application/X-WWW-forms-urlencoded i kodirani. Ako ova obrada nije poželjna (kada je potrebno poslati druge podatke na poslužitelj, kao što je DOMDocument ili xml objekt), tada se može zaobići postavljanjem ovog parametra na false.

skup znakova skripte niz

Prilikom izvođenja GET zahtjeva i zahtjeva koji ciljaju jsonp ili podatke skripte, navodi kodiranje znakova zahtjeva (na primjer, UTF-8 ili CP1251). Korisno za razlike između kodiranja na strani klijenta i na strani poslužitelja.

pauza cijeli broj

Postavlja maksimalno vrijeme čekanja na odgovor poslužitelja u milisekundama. Ima prednost nad postavkom globalnog vremenskog ograničenja preko $.AjaxSetup. Ako je ograničenje vremenskog ograničenja prekoračeno, zahtjev se prekida i poziva se greška funkcije obrade grešaka (ako je instalirana).

Naziv Parametri Opis
greška XHR, textStatus, errorThrown

Pali se kada zahtjev ne uspije. Funkciji se prosljeđuju tri argumenta:

textStatus - niz koji opisuje vrstu pogreške koja se dogodila (timeout, error, notmodified ili parsererror)

errorThrown - izborni parametar, objekt iznimke, ako postoji (vraća instanca XHR objekta)

$.ajax(( //... pogreška: funkcija() ( upozorenje("Pogreška!"); //... ));

uspjeh podaci, tekstStatus, XHR

Pali se kada je zahtjev uspješan. Funkciji se prosljeđuju tri argumenta:

podaci - podaci koje vraća poslužitelj u odgovoru, prethodno obrađeni funkcijom dataFilter u skladu s vrijednošću parametra

textStatus - niz sa statusnim kodom koji označava uspjeh

XHR - instanca objekta XMLHttpRequest

$.ajax(( //... uspjeh: funkcija() ( upozorenje("Uspjeh!"), //... ));

prije Pošalji XHR

Pali se prije slanja zahtjeva. Prosljeđuje mu se instanca XHR objekta (XMLHttpRequest) kao jedini argument. Ako funkcija vrati false, tada se zahtjev poništava.

$.ajax(( //... beforeSend: function() ( alert("BeforeSend je radio!"); //... ));

potpuna XHR, status teksta

Pali se na kraju zahtjeva, bez obzira na njegov uspjeh ili neuspjeh (i također nakon funkcija i, ako su navedene). Funkcija uzima dva argumenta: instancu XHR objekta (XMLHttpRequest) i niz koji označava status uspjeha ili pogreške (prema statusnom kodu u odgovoru na zahtjev)


Detaljan primjer:

funkcija testAjax(id, pid) ( $.ajax(( tip: "POST", podaci: "id=" + id + "&pid=" + pid, url: "/path/to/script/test.php", uspjeh: funkcija(podaci) ( var obj = $.parseJSON(podaci); //Pretvori json odgovora poslužitelja if (obj.error == 0) ( upozorenje("Zahtjev je bio uspješan"); ) else ( upozorenje (obj.error ) )); return true ) Uspješan zahtjev
Zahtjev s pogreškom

PHP skripta (test.php):

Drugi primjer s drugačijim odgovorom:

funkcija testAjax(id, pid) ( $.ajax(( tip: "POST", podaci: "id=" + id + "&pid=" + pid, url: "/path/to/script/test.php", uspjeh: funkcija(podaci) ( $("#sadržaj").html(podaci); ) ));
Zahtjev s pogreškom

Odgovor:

PHP skripta (test.php):


Više informacija možete pronaći na: http://api.jquery.com/jquery.ajax/

24.04.2015 3 11696

Ajax zahtjev između domena uključuje primanje podataka sa stranice site2.ru za stranicu site1.ru. Uobičajeni ajax zahtjevi neće funkcionirati zbog sigurnosne politike, ali u jQueryju, počevši od verzije 1.5, postalo je moguće slati ajax zahtjeve među domenama i primati odgovor u JSON-u.

Kada koristimo JSON, možemo pristupiti bilo kojoj domeni, ali će rezultat doći u obliku JSON odgovora i nećemo ga moći obraditi. JSONP predlaže prosljeđivanje naziva funkcije poslužitelju i primanje ne golih podataka, već podataka umotanih u istu funkciju. Na primjer, kada šaljemo zahtjev na http://site2.ru/data.json?callback=parseFunction, šaljemo naziv funkcije povratnog poziva - parseFunction i primamo određeni odgovor parseFunction(("result": 2, "error ": false)), nakon čega će jQuery pozvati parseFunction za analizu rezultata.

Pogledajmo sve ovo detaljno na primjeru, napravit ćemo zahtjev koji ćemo poslati sa stranice site1.ru na site2.ru i dobiti određeni odgovor u jsonu.

HTML

Kreirajmo jednostavnu stranicu i povežimo jQuery biblioteku:

Odmah otvorite alate za razvojne programere u svom pregledniku i na kartici konzole pokrenite ovaj zahtjev.

Vidjet ćete nešto poput ovoga

Sve je super, poslali smo upit i dobili odgovor. Čini se, što bi moglo biti jednostavnije? Sada idite na bilo koje drugo mjesto gdje je jQuery omogućen i pokušajte učiniti isto. Samo ne na https stranici, saznat ćete zašto na kraju članka.

Na primjer, provjerio sam zahtjeve na nogometnoj web stranici bombardir.ru. I u isto vrijeme sam bio zapanjen kakvom sranju ne pada na konzolu, čak ni na tako dobro poznatim stranicama. Međutim, to nije ono o čemu govorimo.

Izvršite zahtjev s druge domene i vidjet ćete ne tako blaženu sliku u konzoli. Kaže da je nemoguće učitati, nema podataka i općenito je to tužno.

Ako otvorite karticu Mreža i tamo pronađete odgovarajući zahtjev, vidjet ćete da nam je server čak vratio 200 OK
Ali nedostaje sadržaj datoteke. U čemu je kvaka?

Što je pošlo po zlu i koje će biti rješenje

Kvaka je u tome što internetska politika ne dopušta preglednicima da povlače podatke iz bilo kojeg izvora. Osim u slučajevima kada su ti resursi sami zainteresirani za distribuciju određenih podataka.
Ovo je naš slučaj. Da biste dali dopuštenje za korištenje html datoteke s bilo kojeg mjesta, kada tražite ovu datoteku, trebate poslati http zaglavlje Access-Control-Allow-Origin: *

Sada je pitanje kako to učiniti. Ako vi (ili administratori) imate pristup nginxu, tada bi jedan od načina bio da konfigurirate prosljeđivanje ovog zaglavlja pomoću web poslužitelja. Idete administratorima s odgovarajućim zahtjevom ili guglate potrebne konfiguracije za vaš web poslužitelj.

Ako ovaj pristup nije dostupan, kao na primjer, gotovo svaki pružatelj usluga hostinga ima jeftinu tarifu, tada morate izaći sami. I tu php dolazi u pomoć. Ideja je staviti naš html u php datoteku, koja će umetnuti zaglavlje i vratiti traženi sadržaj.

Ispast će ovako, napravite datoteku template.php i u prvi red napišite php naredbu

Zaglavlje ("Access-Control-Allow-Origin: *");

Sadržaj iz template.php

To jest, sadržaj template.php će biti ovakav, ne zaboravite na PHP pitanja i zagrade

Datoteka je stvorena na webdevkinu i nalazi se (otvorit će se u novoj kartici). Pokušajmo sada to zatražiti s druge domene i vidjeti što će se dogoditi

$..php", funkcija(odgovor) (console.log(odgovor))));

Kao što vidite, sve radi dobro - datoteka je učitana!

Pogledajmo karticu Mreža.
Imajte na umu da se zaglavlje Access-Control-Allow-Origin koje nas zanima pojavilo u bloku zaglavlja odgovora: *

Općenito, članak je završen. Ostaje samo da saberem misli i dodam još malo informacija.

Sažimanje i sumiranje
  • 1. Ne možete jednostavno zatražiti bilo koji resurs s druge domene s Ajaxom
  • 2. Pošaljite zaglavlje Access-Control-Allow-Origin za sve resurse kojima je potrebno pristupiti s bilo kojeg mjesta
  • 3. Učinite to koristeći web poslužitelj ili php
  • 4. U php-u ovo se zaglavlje šalje sa zaglavljem naredbe ("Access-Control-Allow-Origin: *")
  • 5. Access-Control-Allow-Origin: * - dopustite pristup svim domenama, Access-Control-Allow-Origin: site.ru - samo domena site.ru
  • 6. Access-Control-Allow-Origin šalje se na samom početku php datoteke, čak i prije nego što se drugi podaci izbace (kao i sva druga http zaglavlja)
  • 7. “Resurs” nije samo datoteka s html oznakama, već i bilo koji url na koji ide ajax zahtjev, na primjer, primanje json podataka ili post zahtjev za dodavanje retka u tablicu baze podataka

I zadnje, izvadio sam ga zasebno. Nisam uzalud tražio da izvršim zahtjeve sa http stranice. Uz https neće biti moguće učitati podatke s http-a iz još jednog razloga - miješani sadržaj. Ali web-mjesto je i dalje http (ažurirano: više nije dostupno, premješteno na https)

To je ono što ćete vidjeti na konzoli ako pokušate izvršiti isti zahtjev s bilo kojeg https mjesta. Stoga, ako ćete raditi embedded widgete ili nešto slično, svakako trebate instalirati SSL certifikat na svoju web stranicu.

Sintaksa i opis:

Povratna vrijednost: Instanca XHR objekta (XMLHttpRequest).

Mogućnosti:

    opcije – (objekt) Objekt u obliku skupa svojstava (ključ: parovi "vrijednost") koji određuju parametre za Ajax zahtjev. Postoji mnogo mogućih parametara (svojstava objekta opcija), a obično se u većini slučajeva ne koriste svi, već samo neki od njih. Osim toga, svi ovi parametri su izborni, jer vrijednost bilo koje od njih može se postaviti na zadanu pomoću metode $.ajaxSetup().

    Sljedeća svojstva objekta opcija dostupna su za konfiguriranje Ajax zahtjeva:

    • async – (boolean - logička vrijednost) Zadana vrijednost je istina, a onda se svi zahtjevi izvršavaju asinkrono (Zato se koristi Ajax, da se operacije izvode paralelno). Ako postavite vrijednost na false, što je krajnje nepoželjno, zahtjev će se izvršiti kao sinkroni (Druge radnje preglednika mogu biti blokirane dok se sinkroni zahtjev izvršava. I općenito preglednik može prestati odgovarati).

      beforeSend(XHR) – (funkcija) Funkcija koja se poziva prije slanja zahtjeva. Koristi se za postavljanje dodatnih (prilagođenih) zaglavlja ili za izvođenje drugih preliminarnih operacija. Prosljeđuje mu se instanca XHR objekta (XMLHttpRequest) kao jedini argument. Ako funkcija vrati false, zahtjev se poništava.

      cache – (boolean - logička vrijednost) Ako je lažno, preglednik ne sprema tražene stranice u predmemoriju. (Preglednik može poslužiti rezultate iz predmemorije. Na primjer, kada su podaci u odgovoru poslužitelja na Ajax zahtjev uvijek novi, predmemorija ometa). Prema zadanim postavkama vrijedi za vrste podataka text, xml, html, json. Za vrste podataka "script" i "jsonp" zadana vrijednost je false.

      complete(XHR, textStatus ) – (funkcija) Funkcija koja se poziva na kraju zahtjeva, bez obzira na njegov uspjeh ili neuspjeh (i nakon funkcija uspjeha i pogreške, ako su navedene). Funkcija uzima dva argumenta: instancu XHR objekta (XMLHttpRequest) i niz koji označava status "uspjeha" ili "pogreške" (prema statusnom kodu u odgovoru na zahtjev).

      contentType – (string) Tip sadržaja u zahtjevu (prilikom slanja podataka poslužitelju). Zadana vrijednost je "application/x-www-form-urlencoded" (prikladno za većinu slučajeva, a također je zadana pri podnošenju obrazaca).

      kontekst – (objekt) Ovaj će objekt postati kontekst (ovo) za sve funkcije povratnog poziva povezane s ovim Ajax zahtjevom (na primjer, za funkcije uspjeha ili pogreške).

      $.ajax(( url: "test.html",
      kontekst: document.body,
      uspjeh: funkcija())(
      $(ovo).addClass("gotovo");
      }});

      podaci – (niz | objekt) Podaci poslani uz zahtjev poslužitelju. Pretvaraju se u niz upita i prema zadanim postavkama kodiraju u oblik sličan URL-u (parametar processData odgovoran je za automatsko kodiranje u URL format).

      Niz se dodaje URL upitnom nizu ako je zahtjev napravljen korištenjem metode GET. Ako se zahtjev izvodi metodom POST, tada se podaci prenose u tijelu zahtjeva.

      Ako je dani parametar objekt kao skup parova property_name/value, a vrijednost je niz, tada jQuery serijalizira objekt u niz višestrukih vrijednosti s istim ključem.

      Na primjer, (Foo: ["bar1", "bar2"]) postati "&Foo=traka1&Foo=traka2" .

      dataFilter(data, type) – (funkcija) Funkcija koja se poziva ako je zahtjev uspješan i koristi se za obradu podataka primljenih u odgovoru poslužitelja na zahtjev. Vraća podatke obrađene prema parametru "dataType" i prosljeđuje ih funkciji uspjeha. Podaci tipa text i xml prosljeđuju se bez neposredne obrade funkciji uspjeha putem svojstva responseText ili responseHTML objekta XMLHttpRequest. Funkcija dataFilter uzima dva argumenta:

    • podaci - primljeni podaci (tijelo odgovora poslužitelja),
    • tip - tip ovih podataka (parametar "dataType").
    • dataType – (niz) Niz koji definira naziv tipa podataka koji se očekuje u odgovoru poslužitelja. Ako tip podataka nije naveden, jQuery ga sam pokušava odrediti, na temelju MIME tipa odgovora poslužitelja. Važeće vrijednosti: "xml", "html", "script", "json", "jsonp", "text". (Ovo je neophodno za definiranje metode za obradu podataka primljenih u odgovoru na zahtjev od strane funkcije dataFilter prije nego što se proslijede funkciji uspješnog povratnog poziva.)

      error(XHR, textStatus, errorThrown) – (funkcija) Funkcija koja se poziva kada zahtjev ne uspije (ako statusni kod u odgovoru poslužitelja ukazuje na pogrešku). Funkciji se prosljeđuju tri argumenta:

    • XHR - instanca objekta XMLHttpRequest,
    • textStatus - niz koji opisuje vrstu pogreške koja se dogodila ("timeout", "error", "notmodified" ili "parsererror"),
    • errorThrown - izborni parametar - objekt iznimke, ako postoji (vraća instanca XHR objekta).
    • global – (boolean - logička vrijednost) Zadana vrijednost je true (dopušta pozivanje globalnih rukovatelja događajima u različitim fazama Ajax zahtjeva, na primjer, funkcije ajaxStart ili ajaxStop). Vrijednost je postavljena na false kako bi se spriječilo njihovo aktiviranje. (Koristi se za upravljanje Ajax događajima).

      ifModified – (boolean - boolean vrijednost) Ako je postavljeno na true, tada se zahtjev smatra uspješnim samo ako su se podaci u odgovoru promijenili od zadnjeg zahtjeva (jQuery utvrđuje odgovara li komponenta u predmemorije preglednika onome što je na poslužitelju provjerom zaglavlje "Last-Modified" s datumom zadnje izmjene sadržaja, a u jQuery 1.4 provjerava se i zaglavlje "Etag" - string s verzijom komponente). Zadana vrijednost je false, tj. Uspjeh zahtjeva ne ovisi o zaglavljima ili promjenama u odgovoru.

      jsonp – (string) Nadjačava naziv funkcije povratnog poziva za jsonp zahtjev među domenama. Zamjenjuje ključnu riječ povratnog poziva u dijelu "povratni poziv=?". GET niz zahtjeva (pridodan URL-u) ili poslan u tijelu zahtjeva kada se šalje metodom POST. Prema zadanim postavkama, jQuery automatski generira jedinstveni naziv za funkciju povratnog poziva.

      jsonpCallback – (string) Definira naziv funkcije povratnog poziva za jsonp zahtjev. Ova će se vrijednost koristiti umjesto nasumičnog imena koje automatski generira biblioteka jQuery. Korištenje ovog parametra omogućuje vam izbjegavanje predmemoriranja GET zahtjeva preglednika. Preporučljivo je dopustiti jQueryju da generira novo ime za svaki novi zahtjev među domenama prema poslužitelju radi lakšeg upravljanja zahtjevima i odgovorima.

      lozinka – (string) Lozinka koja će se koristiti kao odgovor na HTTP zahtjev za autentifikaciju na poslužitelju.

      processData – (boolean) Zadana vrijednost je istinita, a podaci proslijeđeni poslužitelju u parametru podataka pretvaraju se u niz upita s vrstom sadržaja "Application/X-WWW-forms-urlencoded" i kodirani. Ako ova obrada nije poželjna (kada je potrebno poslati druge podatke na poslužitelj, kao što je DOMDocument ili xml objekt), tada se može zaobići postavljanjem ovog parametra na false.

      scriptCharset – (string) Prilikom izvođenja GET zahtjeva i zahtjeva koji ciljaju podatke "jsonp" ili "script", navodi kodiranje znakova zahtjeva (na primjer, "UTF-8" ili "CP1251"). Korisno za razlike između kodiranja na strani klijenta i na strani poslužitelja.

      success(data, textStatus, XHR ) – (funkcija) Funkcija koja se poziva nakon uspješnog zahtjeva (ako kod statusa u odgovoru na zahtjev označava uspjeh). Funkciji se prosljeđuju tri argumenta:

    • podaci - podaci koje vraća poslužitelj u odgovoru, prethodno obrađeni funkcijom dataFilter u skladu s vrijednošću parametra dataType,
    • textStatus - niz sa statusnim kodom koji označava uspjeh,
    • XHR je instanca objekta XMLHttpRequest.
    • timeout – (broj) Postavlja maksimalno vrijeme čekanja na odgovor poslužitelja u milisekundama. Ima prednost nad postavkom globalnog vremenskog ograničenja preko $.AjaxSetup. Ako je ograničenje vremenskog ograničenja prekoračeno, zahtjev se prekida i poziva se greška funkcije obrade grešaka (ako je instalirana). To se može koristiti, na primjer, za dodjeljivanje određenog zahtjeva dužeg vremenskog ograničenja od vremenskog ograničenja postavljenog za sve zahtjeve.

      tradicionalno – (booleovo) Mora biti postavljeno na istinito za korištenje tradicionalne (pojednostavljene) serijalizacije podataka prilikom slanja (bez rekurzivnog pretvaranja u niz objekata ili polja nalik URL-u koji su ugniježđeni unutar drugih polja ili objekata).

      type – (string) HTTP metoda za prijenos podataka prilikom izvršavanja zahtjeva. Prema zadanim postavkama, podaci se prenose metodom GET. Obično se koriste GET ili POST. Također možete koristiti metode PUT i DELETE, ali to se ne preporučuje jer ih ne podržavaju svi preglednici.

      url – (niz) Niz koji sadrži URL na koji se šalje zahtjev. Prema zadanim postavkama ovo je trenutna stranica.

      korisničko ime – (string) Korisničko ime koje će se koristiti za HTTP autorizaciju na poslužitelju.

      xhr – (funkcija) Funkcija koja se poziva za instanciranje objekta XMLHttpRequest. Prema zadanim postavkama, stvaranje XHR objekta implementirano je kroz ActiveXObject u pregledniku IE ili kroz ugrađeni objekt tipa XMLHttpRequest u drugim slučajevima.

  • // Izvođenje asinkronog Ajax zahtjeva korištenjem POST metode. // Pošaljite podatke poslužitelju i, ako je uspješno, prikažite // odgovor poslužitelja u dijaloškom okviru. $.ajax(( type: "POST", url: "test.php", data: "name=John&location=Boston", success: function(msg)( alert("Data Saved: " + msg); ) )) ;



  • jQuery.ajax() - šalje zahtjev poslužitelju bez ponovnog učitavanja stranice. Ovo je metoda niske razine s puno postavki. Na njemu se temelji rad svih ajaxa, koji je često lakši za razumijevanje i korištenje, ali još uvijek pruža ograničenu funkcionalnost u usporedbi s ovom metodom.

    $.ajax() vraća objekt XMLHttpRequest. U većini slučajeva nećete morati raditi izravno s ovim objektom, ali on je i dalje dostupan u slučaju da morate ručno prekinuti zahtjev.

    Funkciji $.ajax() prosljeđuje se objekt koji se sastoji od parova ključ/vrijednost koji se koriste za pokretanje i upravljanje zahtjevom.

    Ajax zahtjev ima dvije upotrebe:

    jQuery.ajax(url [, postavke ])

    Jedina razlika u odnosu na prethodnu verziju metode je da je svojstvo url ovdje dio postavki, a ne zasebni parametar.

    Popis postavki
  • prihvaća (zadano: ovisi o DataType)
    Vrsta: objekt.
    Kada se podnese zahtjev, zaglavlja pokazuju dopuštene vrste sadržaja koje se očekuju od poslužitelja. Vrijednosti ovih tipova bit će preuzete iz parametra accepts. Na primjer, sljedeći primjer specificira važeće customtypes:

    $.ajax(( prihvaća: ( mycustomtype: "application/x-some-custom-type" ), pretvarači: ( "text mycustomtype": function(result) ( return newresult; ) ), dataType: "mycustomtype" ));

    $. ajax ((

    prihvaća: (

    mycustomtype : "application/x-some-custom-type"

    pretvarači: (

    "text mycustomtype" : funkcija (rezultat) (

    vratiti novi rezultat;

    dataType: "mycustomtype"

    } ) ;

  • asinkroni (zadano: istinito)
    Tip: Boolean.
    Prema zadanim postavkama, svi zahtjevi se šalju asinkrono (to jest, nakon slanja zahtjeva poslužitelju, stranica ne prestaje raditi dok čeka odgovor). Ako trebate slati zahtjeve sinkrono, postavite ovu opciju na false. Međudomenski i jsonp zahtjevi ne mogu se izvršiti sinkrono. Imajte na umu da sinkroni zahtjevi mogu blokirati preglednik dok se zahtjev izvodi.
  • beforeSend(jqXHR, postavke)
    Vrsta: funkcija.
    Sadrži funkciju koja će biti pozvana neposredno prije slanja ajax zahtjeva poslužitelju. Ova funkcija može biti korisna za modificiranje jqXHR objekta (u ranijim verzijama biblioteke (do 1.5), XMLHttpRequest se koristi umjesto jqXHR). Na primjer, možete promijeniti/odrediti potrebna zaglavlja itd. Objekt jqXHR bit će proslijeđen funkciji kao prvi argument. Drugi argument su postavke zahtjeva.
    beforeSend se odnosi na ajax događaje. Stoga, ako funkcija navedena u njemu vrati false, ajax zahtjev će biti otkazan Počevši od jQuery-1.5, beforeSend se poziva bez obzira na vrstu zahtjeva.
  • predmemorija (zadano: točno, netočno za dataType "script" i "jsonp")
    Tip: Boolean.
    ako želite da preglednik ne sprema zahtjev u predmemoriju, postavite ovaj parametar na false. Imajte na umu da ako je parametar postavljen na false, redak “_=” bit će dodan URL-u.
  • dovršeno(jqXHR, textStatus)
    Vrsta: funkcija.
    Funkcija koja se izvršava svaki put kada se dovrši AJAX zahtjev (nakon uspješnosti i pogreške). Funkciji se prosljeđuju dva parametra: jqXHR (u ranijim verzijama biblioteke (do 1.5), XMLHttpRequest se koristi umjesto jqXHR) i status izvršenja zahtjeva (vrijednost niza: "uspjeh", "notmodified", "greška", "timeout", "abort" ili "parser error").
    Počevši od jQuery-1.5, možete proslijediti niz funkcija cijelom parametru umjesto samo jedne funkcije. Sve funkcije bit će pozvane redoslijedom kojim su navedene u ovom polju.
  • sadržaj
    Vrsta: objekt.
    Parametar se pojavio u jQuery-1.5 Određen je objektom u formatu (niz:regularni izraz) i određuje kako će jQuery analizirati odgovor poslužitelja, ovisno o njegovoj vrsti.
  • contentType
    Tip: Boolean ili niz.
    Prilikom slanja zahtjeva poslužitelju podaci se prenose u formatu navedenom u contentType. Zadana vrijednost je 'application/x-www-form-urlencoded; charset=UTF-8', što je prikladno u većini slučajeva. Ako eksplicitno navedete ovaj parametar, on će biti poslan na poslužitelj (čak i ako tamo nisu poslani nikakvi podaci).
    S jQuery-1.6 možete proslijediti false da ne postavite naslov.
  • kontekst
    Vrsta: objekt.
    Objekt koji će postati kontekst nakon dovršetka zahtjeva (vrijednost proslijeđena varijabli this). Na primjer, ako navedete DOM element kao kontekst, tada će se svi rukovatelji ajax zahtjevima također izvršiti u kontekstu ovog DOM elementa. U ovom će primjeru ova ključna riječ sadržavati document.body:

    $.ajax(( url: "test.html", kontekst: document.body )).done(function() ( $(this).addClass("done"); ));

    $. ajax ((

    url: "test.html" ,

    kontekst: dokument. tijelo

    ) ) . gotovo(funkcija()(

    $(ovo). addClass("gotovo");

    } ) ;

  • pretvarači (zadano: ("*text": window.String, "text html": true, "text json": jQuery.parseJSON, "text xml": jQuery.parseXML))
    Vrsta: objekt.
    Parametar se pojavio u jQuery-1.5 Određuje koje će se funkcije koristiti za pretvaranje vrijednosti iz jedne vrste u drugu.
  • crossDomain (zadano: false za istu domenu, true za zahtjeve među domenama)
    Tip: Boolean.
    Ova je opcija uvedena u jQuery-1.5 Ako želite izvršiti zahtjev između domena (na primjer, JSONP) na istoj domeni, postavite postavku crossDomain na true. To omogućuje, na primjer, preusmjeravanje poslužitelja na drugu domenu.
  • podaci
    Tip: objekt, niz ili polje.
    Podaci koji će se prenijeti na poslužitelj. Ako podatak nije niz, pretvara se u niz upita. Za GET zahtjeve, podaci su priloženi URL-u. Objekt se mora sastojati od parova ključ/vrijednost. Ako je vrijednost niz, tada jQuery raspoređuje vrijednosti ovisno o tradicionalnoj postavci. Prema zadanim postavkama, na primjer, (foo:["bar1", "bar2"]) postaje &foo=bar1&foo=bar2 .
  • dataFilter(podaci, vrsta)
    Vrsta: funkcija.
    Funkcija koja će prethodno obraditi podatke koje šalje poslužitelj, tj. trebao bi djelovati kao filter i vraćati očišćeni niz. Ovoj se funkciji prosljeđuju dva parametra: navedeni podaci i vrijednost parametra tip podataka. Funkcija navedena u dataFilter mora vratiti obrađene podatke.
  • dataType (zadano: otkriva se automatski (xml, json, skripta ili html))
    Tip: niz.
    Vrsta podataka u kojoj se očekuje odgovor od poslužitelja. Ako nije postavljeno, jQuery će ga pokušati automatski odrediti koristeći MIME primljen od poslužitelja.
  • greška
    Vrsta: funkcija
    Funkcija koja će biti pozvana ako zahtjev prema poslužitelju ne uspije. Opremljen je s tri parametra: jqXHR (sve dok se ne koristi 1.5 XMLHttpRequest), niz koji opisuje pogrešku koja se dogodila, kao i objekt iznimke ako se to dogodi. Moguće vrijednosti za drugi argument su "timeout", "error", "notmodified" i "parsererror" (u neočekivanim slučajevima može se vratiti null). Od jQuery-1.5, ovaj parametar može prihvatiti ili jednu funkciju ili niz funkcija.
    Događaj pogreške ne pojavljuje se kada je dataType skripta ili JSONP.
  • globalno (zadano: istinito)
    Tip: Boolean.
    Odgovoran za rad globalnih događaja ajax zahtjeva (na primjer, ajaxStart ili ajaxStop). Ako ovaj parametar postavite na false, globalni događaji za ovaj zahtjev neće se pokrenuti.
  • zaglavlja
    Vrsta: objekt.
    Parametar se pojavio u jQuery-1.5 Ovdje možete odrediti dodatna zaglavlja zahtjeva. Vrijednosti za ovu postavku bit će unesene prije poziva funkcije beforeSend, gdje se mogu izvršiti konačne promjene zaglavlja.
  • ifModified
    Tip: Boolean.
    Kada je ova postavka postavljena na true, zahtjev će se izvršiti sa statusom "uspješan" samo ako se odgovor poslužitelja razlikuje od prethodnog odgovora. jQuery provjerava ovu činjenicu gledajući u zaglavlje Last-Modified. Od jQuery-1.4, uz Last-Modified, provjerava se i 'etag' (oboje osigurava poslužitelj i neophodni su za obavještavanje preglednika da traženi podaci s poslužitelja nisu promijenjeni u odnosu na prethodni zahtjev) .
  • isLocal
    Tip: Boolean.
    Ova je opcija uvedena u jQuery-1.5.1. Omogućuje vam da postavite izvorni status stranice na lokalni (kao da je preko protokola datoteke), čak i ako ga jQuery drugačije prepozna. Biblioteka odlučuje da se stranica izvodi lokalno u slučaju sljedećih protokola: datoteka, *-ekstenzija i widget. Preporučuje se postaviti vrijednost parametra isLocal globalno - pomoću funkcije $.ajaxSetup(), a ne. u postavkama pojedinačnih ajax zahtjeva.
  • jsonp
    Tip: string ili Boolean.
    Definira naziv parametra koji se dodaje url-u JSONP zahtjeva (prema zadanim postavkama koristi se "povratni poziv"). Na primjer, postavka (jsonp:"onJSONPLoad") pretvara se u url dio niza "onJSONPLoad=?" . Počevši od verzije 1.5, navođenje false u ovom parametru sprječava dodavanje dodatnog parametra u url. U ovom slučaju trebate postaviti vrijednost postavke jsonpCallback. Na primjer: (jsonp:false, jsonpCallback:"callbackName") .
  • jsonpCallback
    Tip: niz ili funkcija.
    Definira naziv funkcije koja će biti pozvana kada poslužitelj odgovori na Jsonp zahtjev. Prema zadanim postavkama, jQuery generira prilagođeni naziv za ovu funkciju, što je poželjna opcija koja pojednostavljuje rad knjižnice. Jedan od razloga za navođenje vlastite funkcije obrade jsonp zahtjeva je poboljšanje predmemoriranja GET zahtjeva.
    Od jQuery-1.5, možete navesti funkciju u ovom parametru kako biste sami obradili odgovor poslužitelja. U tom slučaju navedena funkcija mora vratiti podatke primljene od poslužitelja (u navedenoj funkciji oni će biti dostupni u prvom parametru).
  • metoda (zadano: "GET")
    Tip: niz.
    Parametar se pojavio u jQuery-1.9.0 Omogućuje vam da odredite vrstu zahtjeva poslužitelju ("POST", "GET", "PUT")
  • mimeType
    Tip: niz.
    Parametar se pojavio u jQuery-1.5.1 U ovom polju možete odrediti vrstu podataka u kojoj se očekuje odgovor poslužitelja umjesto XHR
  • lozinka
    Tip: niz.
    Lozinka za autentifikaciju na poslužitelju, ako je potrebna.
  • processData (zadano istinito)
    Tip: Boolean.
    Prema zadanim postavkama, podaci preneseni na poslužitelj pretvaraju se iz objekta u niz upita (url format: fName1=value1&fName2=value2&...) i šalju se kao "application/x-www-form-urlencoded" . Ako trebate poslati DOM dokument ili druge podatke koji se ne mogu pretvoriti, postavite opciju processData na false.
  • skup znakova skripte
    Tip: niz.
    Primjenjuje se samo na Ajax GET zahtjeve, dataType može biti "jsonp" ili "script". Ako poslužitelj na domeni treće strane koristi različito kodiranje od vašeg, morate navesti kodiranje poslužitelja treće strane.
  • statusCode
    Vrsta: objekt.
    Parametar se pojavio u jQuery-1.5.0 Skupu parova u kojima su kodovi za izvršavanje zahtjeva povezani s funkcijama koje će biti pozvane. Na primjer, za kod 404 (stranice ne postoje), možete prikazati poruku na ekranu:

    $.ajax(( statusCode: ( 404: function() ( alert("stranica nije pronađena"); ) ) ));

    $. ajax ((

    StatusCode: (

    404 : funkcija () (

    upozorenje ("stranica nije pronađena" );

    } ) ;


    Ako je zahtjev bio uspješan, tada će anonimna funkcija kao parametar uzeti iste parametre kao i funkcije rukovatelja za uspješno izvršenje zahtjeva (navedene u parametru uspjeha), au slučaju pogreške, iste parametre kao i kod greške funkcije.
  • uspjeh(podaci, tekstStatus, jqXHR)
    Tip: funkcija, polje.
    Funkcija koja će biti pozvana ako se zahtjev prema poslužitelju uspješno završi. Uzima 3 argumenta:
    • podaci poslani od strane poslužitelja i prethodno obrađeni;
    • niz sa statusom izvršenja (textStatus);
    • jqXHR objekt (u verzijama prije 1.5, XMLHttpRequest se koristi umjesto jqXHR). Od jQuery 1.5, umjesto jedne funkcije, ovaj parametar može prihvatiti niz funkcija.
  • pauza
    Vrsta: broj.
    Vrijeme čekanja na odgovor od poslužitelja u milisekundama. Prepisuje globalnu postavku istog parametra u $.ajaxSetup(). Ako se ovo vrijeme prekorači, zahtjev će biti dovršen s pogreškom i dogodit će se događaj pogreške koji će imati status “timeout”.
    Vrijeme se računa od trenutka poziva funkcije $.ajax. Može se dogoditi da će se u ovom trenutku pokrenuti nekoliko drugih zahtjeva, a preglednik će odgoditi izvršenje trenutnog zahtjeva. U ovom slučaju, vremensko ograničenje može završiti, iako zapravo zahtjev još nije ni pokrenut.
    U jQuery-1.4 i starijim, kada XMLHttpRequest objekt istekne, prijeći će u stanje pogreške i pristup njegovim poljima može izazvati iznimku. U Firefoxu 3.0+, skripta i JSONP zahtjevi neće biti prekinuti ako istekne vrijeme. Bit će dovršeni i nakon što to vrijeme istekne.
  • tradicionalni
    Tip: Boolean.
    Postavite ovaj parametar na true za korištenje tradicionalnih opcija pretvorbe (serializacije).
  • vrsta (zadano: "GET")
    Tip: niz.
    Slično parametru metode. Parametar se koristi u jQueryju starijem od 1.9.0
  • url (zadano: adresa trenutne stranice)
    Tip: niz.
    Definira adresu na koju će zahtjev biti poslan.
  • Korisničko ime
    Tip: niz.
    Korisničko ime za provjeru autentičnosti na poslužitelju, ako je potrebno.
  • xhr (zadano: ActiveXObject u IE, XMLHttpRequest u drugim preglednicima)
    Vrsta: funkcija.
    Funkcija koja će pružiti objekt XMLHttpRequest. Prema zadanim postavkama, za IE preglednike ovaj objekt je ActiveXObject, au ostalim slučajevima to je XMLHttpRequest. S ovom opcijom možete implementirati vlastitu verziju ovog objekta.
  • xhrPolja
    Vrsta: objekt.
    Parametar se pojavio u jQuery-1.5.1 Skup parova (naziv: vrijednost) za promjenu/dodavanje vrijednosti odgovarajućih polja objekta XMLHttpRequest. Na primjer, možete postaviti svojstvo withCredentials na true kada izvršavate zahtjev između domena:

    $.ajax(( url: a_cross_domain_url, xhrFields: ( withCredentials: true ) ));

    $. ajax ((

    url: a_cross_domain_url,

    xhrFields:(

    withCredentials : istina

    } ) ;

  • Kao što je gore spomenuto, $.ajax() je najosnovnija metoda, a sve sljedeće metode samo su omoti. Vrlo često nema potrebe pozivati ​​ovu funkciju, jer Postoje alternative više razine kao što su , i . Lakše ih je razumjeti i koristiti, iako je $.ajax() fleksibilnije rješenje.

    Najjednostavniji slučaj upotrebe bio bi pozivanje $.ajax() bez navođenja parametara:

    $. ajax();

    Rukovatelji događajima

    Postavke beforeSend, error, dataFilter, success i complete dopuštaju vam postavljanje rukovatelja događajima koji se pojavljuju u određenim točkama u izvršavanju svakog ajax zahtjeva.

    • beforeSend se događa neposredno prije slanja zahtjeva na poslužitelj;
    • greška se javlja ako zahtjev ne uspije;
    • dataFilter se javlja kada podaci stignu s poslužitelja. Omogućuje obradu "sirovih" podataka koje šalje poslužitelj;
    • uspjeh se događa ako se zahtjev uspješno završi;
    • complete se događa kad god se zahtjev završi.
    • uspjeh : funkcija () (

      upozorenje ("Podaci su uspješno poslani." );

      } ) ;

      Pažnja! Gore navedene postavke .success(), .error() i .complete() dodane su u jQuery-1.5 uz standardne metode .done(), .fail() i .then() za odgođeni objekt, koji može se koristiti za postavljanje rukovatelja, no počevši od jQuery-1.8 ove tri metode postat će zastarjele.

      dataType parametar

      Funkcija $.ajax() uči o vrsti podataka koje poslužitelj šalje od samog poslužitelja (preko MIME-a). Osim toga, postoji mogućnost da osobno naznačite (pojasnite) kako se ti podaci trebaju tumačiti. To se radi pomoću parametra dataType. Moguće vrijednosti za ovaj parametar:

      • “xml” - rezultirajući xml dokument bit će dostupan u tekstualnom obliku. S njim možete raditi pomoću standardnih jQuery alata (kao i s html dokumentom).
      • "html" - rezultirajući html bit će dostupan u tekstualnom obliku. Ako sadrži skripte u oznakama, one će se automatski izvršiti samo kada se html tekst postavi u DOM.
      • “script” - primljeni podaci će se izvršiti kao javascript. Varijable koje obično sadrže odgovor poslužitelja sadržavat će jqXHR objekt.
      • “json”, “jsonp” - primljeni podaci bit će unaprijed pretvoreni u javascript objekt. Ako raščlanjivanje ne uspije (što se može dogoditi ako json sadrži pogreške), izbacit će se iznimka pogreške raščlanjivanja datoteke. Ako je poslužitelj kojem pristupate na drugoj domeni, tada bi se trebao koristiti jsonp umjesto json.
      • “text” - primljeni podaci bit će dostupni u običnom tekstu, bez prethodne obrade.
      Slanje podataka na poslužitelj

      Prema zadanim postavkama, zahtjev prema poslužitelju se postavlja koristeći HTTP GET metodu. Ako trebate podnijeti zahtjev metodom POST, trebate navesti odgovarajuću vrijednost u postavci tipa. Podaci poslani metodom POST bit će pretvoreni u UTF-8 ako su u drugom kodiranju, kao što zahtijeva standard W3C XMLHTTPRequest.

      Parametar podataka može se navesti ili kao niz u formatu ključ1=vrijednost1&ključ2=vrijednost2 (format prijenosa podataka u url-u) ili kao objekt sa skupom parova (ime:vrijednost) - (ključ1: "vrijednost1", ključ2: "vrijednost2") . U potonjem slučaju, prije slanja podataka, jQuery pretvara dani objekt u niz koristeći $.param(). Međutim, ova se pretvorba može poništiti postavljanjem postavke processData na false. Konverzija u niz je nepoželjna, na primjer, u slučaju slanja xml objekta na poslužitelj. U tom slučaju, preporučljivo je promijeniti postavku contentType

      url: "test.php" ,

      uspjeh : funkcija (podaci) (

      upozorenje ("Primljeni podaci: " + podaci) ;

      } ) ;

    reci prijateljima