JQuery Ajax Získajte údaje z inej domény. Cross-Domain Ajax s jQuery

2. decembra. , 2016

Akonáhle som napísal článok Ako vytvoriť vstavané miniaplikácie na natívne JavaScript a PHP. A všetko by bolo v poriadku, ale jeden okamih to neovplyvnil. Takéto widgety môžu byť použité na našej vlastnej stránke, ale zaujímavejšie ich vytvoriť pre zdroje tretích strán. Ale v tomto prípade musí požadovaný prehliadač dát načítať z inej domény - to je cross-doména AJAX požiadavky.

Z hľadiska programátorov frontend sa cross-doménové požiadavky nelíšia od obyčajného. Ale na Bekend je rozdiel. Prečo s nimi nie je všetko tak jednoduché a ako ich implementovať - \u200b\u200bčítať o tom v článku.

Snažíme sa získať údaje z inej domény

Pre jednoduchosť zvážte požadované požiadavky. Predpokladajme, že server leží určitý HTML súbor, ktorý je k nám na stiahnutie AJAX-OHM z inej domény .. HTML. Otvorte ho a uistite sa, že je to naozaj k dispozícii - (otvorí sa na novej karte). Toto je pravidelný div s textom "Obsah od template.html".

A teraz si tento HTML-KU AJAX-OHM priamo z konzoly prehliadača.

Nebudeme pýžení s natívnym javascriptom a poháňaním žiadosti pomocou jquery.get () a priniesť do konzoly, čo sa dostali do reakcie zo servera.

$ .. HTML ", funkcia (Responce) (Responce));

Otvorte TERAZ TÝKAJÚCE SA DOUKTORA V prehliadači a na karte Konzola vykonajte túto požiadavku.

Uvidíte o nasledujúcom

Všetko je úžasné, poslal žiadosť, dostal odpoveď. Zdá sa, že by to mohlo byť jednoduchšie? A teraz choďte na akékoľvek iné stránky, kde je jQuery pripojený a pokúsiť sa urobiť to isté. Nie len na stránke HTTPS, prečo - učiť sa na konci článku.

Napríklad som skontroloval požiadavky na futbalové miesto Bombardir.ru. A zároveň bol prepustený, ktorý odpad nepatrí do konzoly ani na takýchto známych miestach. Konverzácia však nie je o tom.

Vykonajte požiadavku z inej domény a uvidíte, že konzola už nie je taký čln. Hovorí, že nie je možné stiahnuť, žiadne údaje a vo všeobecnom zármutku.

Ak otvoríte kartu Sieť a nájdite príslušný dotaz, uvidíte, že server sa dokonca vráti na US 200 OK
A nie je žiadny obsahový súbor. Čo je to úlovok?

Čo sa stalo a čo bude rozhodnutie

Úlovok je, že internetové politiky neumožňujú prehliadačom vytiahnuť údaje z akýchkoľvek zdrojov. Okrem prípadov, keď sa tieto zdroje majú záujem o distribúciu konkrétnych údajov.
Náš prípad je taký. Ak chcete poskytnúť povolenie používať súbor HTML odkiaľkoľvek, chcete odoslať hlavičku HTTP prístupu-Control-Oright-Origin-Origin, pri vyžiadaní súboru.

Teraz je otázka, ako to urobiť. Ak ste (alebo admins) majú prístup k NGINX, potom jedným spôsobom konfigurovať kontamináciu tejto hlavičky do nástrojov webového servera. Prejdete do administrácií s príslušnou požiadavkou alebo Google sami požadovanú konfiguráciu pre váš webový server.

Ak nie je tento prístup, ako napríklad, v takmer každom poskytovateĺa hostingu v lacnej tarife, potom sa musíte dostať von. A tu php príde na záchranu. Myšlienkou je hodiť náš HTML-KU do PHP súboru, ktorý znáša titul, a dá požadovaný obsah.

Ukazuje sa, že vytvoríte súbor template.php a prvý reťazec Napíšte PHP príkaz

Header ("Prístup-Control-Control-Pôvod: *");

Obsah od template.php.

To znamená, že obsah template.php bude tak, nezabudnite na php-rukávy a konzoly

Súbor na WebDevkin je vytvorený a leží (otvorí sa na novej karte). Poďme sa teraz pokúsiť požiadať z inej domény a zistiť, čo sa stane

$ .. php ", funkcia (responce));

Ako vidíte, všetko funguje dobre - súbor je načítaný!

Pozrite sa na kartu Sieť.
Upozorňujeme, že hlavička prístupu-Control-Control-Origin-Origin je záujem o hlavičky odpovedí.

Vo všeobecnosti je článok ukončený. Zostáva zbierať myšlienky v partii a pridať ďalšie informácie.

Zhrnúť a zhrnúť

  • 1. Nie je možné ľahko požiadať AJAX akýkoľvek zdroj z inej domény
  • 2. Posielať hlavičku prístupu-Control-Control-Origin-Oright pre všetky zdroje, ku ktorému môže byť potrebný prístup.
  • 3. Urobte to so webovým serverom alebo PHP
  • 4. Na PHP je táto hlavička odoslaná príkazom hlavičky ("Access-Control-Control-Pôvod: *")
  • 5. Prístup-Control-Control-Pôvod: * - Umožniť prístup k všetkým doménam, prístupovému riadiacemu zariadeniu: Site.ru - Len doména.ru
  • 6. Access-Control-Control-Pôvod je odoslaný na samom začiatku súboru PHP, dokonca pred výstupom iných údajov (ako aj akékoľvek iné titulky HTTP)
  • 7. "Resource" nie je len súbor s HTML Markups, ale aj akúkoľvek adresu URL, na ktorú prichádza požiadavka AJAX, napríklad prijímanie údajov JSON alebo požiadavku na príspevok na pridanie reťazca do tabuľky databázy

A posledný, vykonávaný samostatne. Nesnažil som sa splniť požiadavky na stránke HTTP. S HTTPS nebude možné načítať údaje z HTTP pre iný dôvod - zmiešaný obsah. A stránka je stále http stránky ( aktualizované: Už si odložili stránku na https)

To je to, čo uvidíte v konzole, snažíte sa splniť rovnakú požiadavku z ľubovoľného stránky HTTPS. Preto, ak sa chystáte zapojiť do vstavaných miniaplikácií alebo niečo také, určite musíte dať na vaše stránky certifikát SSL.

jquery.ajax () - Vykonáva požiadavku na server bez reštartujte stránku. Toto je metóda nízkej úrovne. veľká kvantita Nastavenie. Je založený na práci všetkých AJAX, čo je často ľahšie pochopiť a používať, ale čo stále poskytuje obmedzenú funkčnosť v porovnaní s touto metódou.

$ .ajax () vráti objekt XMLHTTPREK. Vo väčšine prípadov nebudete musieť pracovať priamo s týmto cieľom, ale je stále k dispozícii, v prípade, že je potrebné vykonať žiadosť manuálne.

Ako argument je funkcia $ .AJAX () prenáša objekt pozostávajúci z dvojice kľúča / hodnoty, ktoré sa používajú na inicializáciu a správu žiadosti.

Žiadosť AJAX má dve možnosti použitia:

jquery.ajax (URL [, Nastavenia])

Rozdiel z predchádzajúcej verzie metódy sa skladá len na to, že vlastnosť URL je tu súčasťou nastavení, a nie samostatný parameter.

Zoznam nastavení (Nastavenia)

  1. prijíma.(Predvolené: Závisí od dátového typu)
    Typ: Object.
    Pri vykonávaní dotazu, hlavičky (hlavičky) označujú prípustné typy obsahu očakávaný od servera. Hodnoty týchto typov budú prevzaté z parametra akceptov. Nasledujúci príklad napríklad označuje prípustné typy CUSTETYPE:

    $ .AJAX ((akceptuje: (mycustomtype: "Aplikácia / X-Niektoré-Custom-Type"), konvertory: ("Text Mycustomtype": Funkcia (výsledok) (návrat newresult;)), Datatype: "mycustomtype");

    $. AJAX ((

    prijíma: (

    mycustomtype: "Aplikácia / X-Niektoré-Custom-Type"

    konvertory: (

    "Text mycustomtype": Funkcia (výsledok) (

    návrat newresult;

    datatype: "mycustomtype"

    } ) ;

  2. async. (Predvolené: TRUE)
    Typ: Logická hodnota.
    V predvolenom nastavení sú všetky požiadavky odosielané asynchrónne (to znamená, že po odoslaní požiadavky na server, stránka nezastaví svoju prácu pri čakaní na odpoveď). Ak potrebujete odosielať dotazy synchrónne, nastavte túto možnosť vo false. Požiadavky na kríženie a požiadavky typu "JSONP" nie je možné vykonať v synchrónnom režime. Upozorňujeme, že synchrónne požiadavky môžu blokovať prehliadač počas času vykonania.
  3. beforesert (JQXHR, Nastavenia)
    Typ: Funkcia.
    Obsahuje funkciu, ktorá bude nazývaná okamžite pred odoslaním požiadavky AJAX na server. Táto funkcia môže byť užitočná pre modifikáciu objektu JQXHR (v predčasné verzie Knižnice (do 1.5), namiesto JQXHR používa XMLHTTPREQUEST). Môžete napríklad zmeniť / špecifikovať potrebné hlavičky (hlavičky) i.d. Objekt JQXHR bude prenášaný na funkciu prvého argumentu. Druhý argument prejde nastavenia dotazu.
    BEFORESIDE sa vzťahuje na udalosti AJAX. Preto, ak funkcia zadaná v ňom vráti false, dotaz AJAX bude zrušený. Beforesend sa nazýva nezávisle od typu dotazu.
  4. cache. (Predvolené: True, False for Datatype "Script" a "JSONP")
    Typ: Logická hodnota.
    Ak chcete, aby prehliadač nevyhlasovalo žiadosť, potom nastavte tento parameter na FALSE. Upozorňujeme, že ak je parameter nastavený na FALSE, "_ \u003d" reťazec bude pridaný do URL.
  5. kompletné (jqxhr, textStatus)
    Typ: Funkcia.
    Funkcia, ktorá sa vykoná zakaždým po dokončení dotazu AJAX (po dokončení úspechu a chyby). Dva parametre sa prenášajú do funkcie: JQXHR (v skorých verziách knižnice (do 1,5), namiesto JQXHR používa XMLHTTPROEST) a stav vykonávania dotazu (hodnota reťazca: "Úspech", "Notmodifikovaný", " Chyba "," Timeout "," ABORT "alebo" ParserError ").
    Počnúc jQuery-1.5 sa kompletný parameter môže prenášať nie jednu funkciu, ale rad funkcií. Všetky funkcie budú spôsobené v poradí, v akom je pole špecifikované.
  6. obsah.
    Typ: Object.
    Parameter sa objavil v JQuery-1.5, je nastavený vo formáte objektu (reťazec: regulárny výraz) a určuje, ako JQuery rozoberie odpoveď zo servera, v závislosti od jeho typu.
  7. druh obsahu.
    Typ: Logická hodnota alebo reťazec.
    Pri odosielaní požiadavky na server sa údaje prenášajú vo formáte uvedenom v ContentType. Štandardne sa "aplikačný / x-www-form-urlencoded; Charset \u003d UTF-8 ', ktorý je vo väčšine prípadov vhodný. Ak zadáte tento parameter explicitne, bude prenesený na server (aj keď sa tam neposlali žiadne údaje).
    S jQuery-1.6 môžete odoslať false, aby ste nenainštalovali názov.
  8. kontext.
    Typ: Object.
    Objekt, ktorý bude kontext po vykonaní dotazu (prenášaná hodnota tejto premennej). Napríklad, ak zadáte DOM Element ako kontext, potom všetky manipulátory požiadavky AJAX budú vykonané aj v kontexte tohto prvku DOM. V tomto príklade kľúčové slovo To bude obsahovať dokument.Body:

    $ .ajax ((URL: "test.html", kontext: dokument.body)). DONE (funkcia () ($ (táto) .addclass (ďalej len "DONE");););

    $. AJAX ((

    uRL: "test.html",

    kontext: Dokument. Telo.

    )). (Funkcia () ()

    $ (toto). Addclass ("Hotovo");

    } ) ;

  9. meničov.(Predvolené: ("* Text": Window.string, "Text HTML": TRUE, "Text JSON": jquery.parsejson, "text XML": jquery.parsexml))
    Typ: Object.
    Parameter sa objavil v JQuery-1.5 určuje, s pomocou toho, čo budú funkcie prevedené na hodnoty z rovnakého typu, v inom.
  10. kríženia.(Predvolené: False pre tú istú doménu, True for CrossDomeds)
    Typ: Logická hodnota.
    Parameter sa objavil v JQuery-1.5, ak chcete vykonať cross-doménový dotaz (napríklad JSONP) na tej istej doméne, nastaviť TRUE v nastavení krížového druhu. To umožňuje napríklad vykonať presmerovanie servera do inej domény.
  11. Údaje.
    Typ: Objekt, reťazec alebo pole.
    Údaje, ktoré budú prenesené na server. Ak údaje nie sú reťazec, potom sa konvertujú na reťazec dotazu. Pre získanie požiadaviek sú údaje pripojené k URL. Objekt by mal pozostávať z dvojice kľúča / hodnoty. Ak je hodnota poľa, potom hodnoty objednávok jQuery v závislosti od tradičného nastavenia. Štandardne, napríklad (foo: ["Bar1", "Bar2"]) sa otočí do & FOO \u003d BAR1 & FOO \u003d BAR2.
  12. dataFilter (údaje, typ)
    Typ: Funkcia.
    Funkcia, ktorá bude predskupiť dáta odoslané serverom, t.j. Mal by hrať úlohu filtra a vrátiť vyčistený reťazec. Na túto funkciu sa prenášajú dva parametre: uvedené údaje a hodnota parametra dátový typ. Funkcia zadaná v datafilleri musí vrátiť spracované údaje.
  13. dátový typ (Predvolené: Automaticky sa určí (XML, JSON, SCRICT, ALEBO HTML))
    Typ: riadok.
    Druh dát, v ktorých sa očakáva, že dostane odpoveď zo servera. Ak to nie je špecifikované, JQuery sa bude snažiť určiť ho automaticky pomocou servera MIME.
  14. chyba
    Typ: Funkcia
    Funkcia, ktorá bude volaná v prípade neúspešného ukončenia žiadosti na server. Poskytuje tri parametre: JQXHR (až 1,5 sa používa XMLHTTTPROEST), reťazec s popisom chyby, ku ktorej došlo, ako aj objekt výnimky, ak sa to stalo. Možné hodnoty druhého argumentu: "TIMEOUT", "ERROR", "NOTMODIKOVANÉ" A "PARSEREROROR" (v nepredvídaných prípadoch, môže byť vrátená hodnota null). Počnúc jQuery-1.5, tento parameter môže mať jednu funkciu aj pole funkcií.
    Udalosť chýb sa nevyskytuje, keď sa dátYPE rovná skriptu alebo JSONP.
  15. globálny (Predvolené: TRUE)
    Typ: Logická hodnota.
    Zodpovedný za prevádzku globálnych udalostí AJAX (napríklad Ajaxstart alebo AjaxStop). Ak nastavíte tento parameter na falošné, globálne udalosti táto požiadavka Bude volaný.
  16. hlavičky.
    Typ: Object.
    Parameter sa objavil v jQuery-1.5 Tu môžete zadať ďalšie hlavičky dotazu (hlavička). Hodnoty tohto nastavenia budú zadané pred nazývaním funkcie Beforesend, v ktorej môžu byť konečné zmeny vykonané na titulky.
  17. ifmoduful.
    Typ: Logická hodnota.
    Keď prenesiete toto nastavenie na hodnotu TRUE, dotaz bude doplnený so stavom "úspešným", len ak sa odozva zo servera líši od predchádzajúcej odpovede. JQuery kontroluje túto skutočnosť s odkazom na poslednú upravenú hlavičku. Počnúc jQuery-1.4, okrem posledného upraveného a 'ETAG' sa tiež skontroluje (obaja poskytujú server a sú potrebné na oznamovanie prehliadača, že požadované údaje zo servera sa nezmení z predchádzajúcej požiadavky).
  18. islocal
    Typ: Logická hodnota.
    Parameter sa objavil v JQuery-1.5.1 Umožňuje nastaviť stav zdroja stránky lokálne (ako keby sa to stalo prostredníctvom protokolu súborov), aj keď JQUERE ho rozpoznal inak. Knižnica sa rozhodne, že stránka je spustená lokálne v prípade nasledujúcich protokolov: Súbor, * -extension a widget. Odporúča sa nastaviť hodnotu Islocal parametrov globálne - pomocou funkcie $ .ajaxsetup () a nie v Nastavenia jednotlivých dotazov AJAX.
  19. jsona
    Typ: riadok alebo logická hodnota.
    Definuje názov parametra, ktorý je pridaný do URL požiadavky JSONP (predvolené, "sa používa" spätný hovor "). Konfigurácia (JSONP: "OnjsonPload") sa napríklad konvertuje na časť adresy URL reťazca "OnjsonPload \u003d?" . Od verzie 1.5, špecifikácia v tomto falošnom parametri zabraňuje pridaniu adresu URL dodatočný parameter. V tomto prípade musíte nastaviť hodnotu nastavenia JSONPCallbate. To je napríklad: (JSONP: FALSE, JSONPCALLOCK: "CallBackName").
  20. jsonpcallback
    Typ: reťazec alebo funkciu.
    Definuje názov funkcie, ktorá bude volaná pri odpovedaní na server na požiadanie JSZZ. Štandardne JQuery generuje ľubovoľný názov tejto funkcie, čo je výhodnejšia možnosť, ktorá zjednodušuje prevádzku knižnice. Jedným z dôvodov, v ktorých je určiť vlastnú funkciu spracovania JSONP dotazov, je zlepšiť ukladanie do pamäte cache získať požiadavky.
    Počnúc jQuery-1.5 môžete v tomto parametri zadať funkciu, aby ste mohli spracovať odpoveď servera. V tomto prípade musí zadaná funkcia vrátiť údaje prijaté zo servera (v zadanej funkcii, budú k dispozícii v prvom parametri).
  21. metóda (predvolené: "Získajte")
    Typ: riadok.
    Parameter sa objavil v JQuery-1.9.0 Umožňuje špecifikovať typ požiadavky na server ("Post", "Získajte", "Dajte")
  22. mimetyp.
    Typ: riadok.
    Parameter sa objavil v jQuery-1.5.1. V tomto poli môžete zadať typ údajov, v ktorých sa očakáva odpoveď zo servera namiesto XHR
  23. heslo.
    Typ: riadok.
    V prípade potreby heslo pre autentifikáciu na serveri.
  24. procesdata. (Predvolené pravdivé)
    Typ: Logická hodnota.
    V predvolenom nastavení sú dáta prenášané na server prevedené z objektu v reťazci dotazu (formát URL: fname1 \u003d hodnota1 & fname2 \u003d hodnota2 & ...) a odoslaná ako "aplikácia / x-www-form-urlencoded". Ak potrebujete odoslať DOM dokument alebo iné údaje, ktoré nie je možné previesť na nastavenie možnosti ProcessData vo FALSE.
  25. scriptarset.
    Typ: riadok.
    Platí len pre AJAX získať dotazy, DataType môže byť alebo "jsonp", alebo "skript". Ak server na doméne tretej strany používa iné kódovanie, ako je vaše, musíte zadať kódovanie servera tretej strany.
  26. stavcode.
    Typ: Object.
    Parameter sa objavil v JQuery-1.5.0 Sada pary, v ktorej sú kódy dotazov v porovnaní s funkciami, ktoré budú spôsobené. Napríklad pre kód 404 (neexistujú), môžete na obrazovku kresliť správu:

    $ .ajax (stavcode: (404: Funkcia () (ALERT ("STRÁNKU NEBUDE");)));

    $. AJAX ((

    statusCode: (

    404: Funkcia () () (

    upozornenie ("stránka sa nenašla");

    } ) ;


    Ak požiadavka úspešne prešla, potom ako parameter, anonymná funkcia Bude to mať rovnaké parametre, ktoré funkcie úspešného vykonávania dotazu (špecifikované v parametri úspechu) a v prípade chyby rovnaké ako funkcie chýb.
  27. Úspech (dáta, textStatus, jqxhr)
    Typ: Funkcia, pole.
    Funkcia, ktorá bude volaná v prípade úspešného ukončenia požiadavky servera. Trvá 3 argumenty:
    • Údaje (údaje) odoslané serverom a predbežným spracovaním;
    • reťazec s stavom vykonania (textStatus);
    • objekt JQXHR (vo verziách až 1,5 namiesto JQXHR používa XMLHTTTPREAKEST). Od JQuery 1.5 namiesto jednej funkcie, tento parameter môže mať rad funkcií.
  28. Čas vypršal.
    Typ: číslo.
    Čas Čakanie na odpoveď zo servera v milisekundách. Prepisujte globálne nastavenie Rovnaký parameter v $ .ajaxsetup (). Ak je tento čas prekročený, požiadavka bude dokončená s chybou a vyskytne sa udalosť chýb, ktorá bude mať stav "Timeout".
    Čas sa počíta od okamihu volania funkcie $ .ajax. Môže sa stať, že v tomto okamihu sa spustí niekoľko ďalších požiadaviek a prehliadač odloží vykonanie aktuálnej žiadosti. V tomto prípade je možné dokončiť časový limit, hoci v skutočnosti sa žiadosť ani nespustila.
    V JQUERE-1.4 a mladšej, na konci čakacej doby sa XMLHTTPREQUEST objekt prepne na chybový stav a prístup k jeho poliam môže spôsobiť výnimku. Vo Firefoxe 3.0+ sa skript a dotazy JSONP nebudú prerušené, keď je čakacia doba prekročená. Budú dokončení aj po uplynutí tejto doby.
  29. tradičný
    Typ: Logická hodnota.
    Nastavte hodnotu tohto parametra na true, aby ste mohli používať tradičné parametre konverzie (serializácia).
  30. typ(Predvolené: "Získajte")
    Typ: riadok.
    Metóda analógového parametra. Parameter sa používa v jQuery pod 1.9.0
  31. url (Predvolené: adresa aktuálnej stránky)
    Typ: riadok.
    Definuje adresu, na ktorú bude žiadosť odoslaná.
  32. užívateľské meno.
    Typ: riadok.
    Používateľské meno pre autentifikáciu na serveri, ak je to potrebné.
  33. xHR.(Predvolené: ActiveXObject in IE, XMLHTTPROEST v iných prehliadačoch)
    Typ: Funkcia.
    Funkcia, ktorá poskytne objekt XMLHTTPREAKEST. V predvolenom nastavení je prehliadač IE tento objekt ActiveXObject a v iných prípadoch je XMLHTTTPROEST. S týmto parametrom môžete implementovať vlastnú verziu tohto objektu.
  34. xhrfields.
    Typ: Object.
    Parameter sa objavil v JQuery-1.5.1 Sada párov (Názov: Znamenie) na zmenu / pridanie hodnôt zodpovedajúcich polí objectXMLHTPTPEST. Môžete napríklad nastaviť svoje srdečné vlastnosti v TRUE, pri vykonávaní dotazu Crosscain:

    $ .ajax ((URL: A_CROSS_DOMAIN_URL, XHRFLIES: (sccredentials: TRUE));

    $. AJAX ((

    uRL: A_CROSS_DOMAIN_URL,

    xhrfields: (

    scredentials: TRUE.

    } ) ;

Ako už bolo uvedené vyššie, $ .ajax () najzákladnejšia metóda a všetky nasledujúce metódy sú len jeho obalom. Veľmi časť nie je potrebné zavolať túto funkciu, pretože Existujú alternatívy vyššej úrovne, ako napríklad a. Sú ľahšie porozumenie a použitie, aj keď $ .ajax () je flexibilnejšie riešenie.

Najjednoduchší spôsob, ako používať, bude $ cajax () volanie bez špecifikácie parametrov:

$. AJAX ();

Puzdrá na udalosti

Beforsend, Chyba, nastavenia údajovFilter, úspech a dokončenie umožňujú inštalovať manipulátory udalostí, ktoré sa vyskytujú v určitých časoch každého dotazu AJAX.

  • beforesend.dochádza okamžite pred odoslaním požiadavky na server;
  • chyba vyskytuje v prípade neúspešného vykonávania dotazu;
  • dataFilter. sa stane v čase príchodu údajov zo servera. Umožňuje ovládať "RAW" údaje odoslané serverom;
  • Úspech. dochádza v prípade úspešného ukončenia žiadosti;
  • dokončiť.sa deje v prípade akéhokoľvek ukončenia žiadosti.
  • Úspech: Funkcia () ()

    upozornenie ( "Údaje boli úspešne odoslané.") ;

    } ) ;

    Pozor! Nastavenia diskutované vyššie.Success (), .Error () a-.Pelate () boli pridané do JQuery-1,5, okrem štandardných metód odloženého objektu.Done (), .Fail () I.THEN (), s Ktorý môžete inštalovať manipulátory, počnúc jQuery-1.8 tieto tri metódy budú nežiaduce použitie.

    Dátový typ

    Funkcia $ .ajax () zistí, že typ dátového servera odoslaného zo samotného servera (nástroje MIME). Okrem toho je možné osobne špecifikovať (objasniť), ako interpretovať tieto údaje. Toto sa vykonáva pomocou parametra. dátový typ. Možné hodnoty tohto parametra:

    • "XML" - Výsledný dokument XML bude k dispozícii v textovej forme. Môžete s ním pracovať Štandardné prostriedky jQuery (ako aj s dokumentom HTML).
    • "HTML" - Prijaté HTML bude k dispozícii v textovom formulári. Ak obsahuje skripty v tagoch
      Počet niečoho na serverovej stránke2.ru -

      Php.

      Teraz musíme vytvoriť objekt JSON s údajmi, v PHP. Predpokladajme, že určitý meter je uložený na stránke Site2.RU servera, budeme ho požiadať z lokality1.ru a získajte len číslo (číslo niečoho). Upozorňujeme, že musíme vytvoriť objekt JSONP namiesto obvyklého objektu JSON.

      // Vytvorte pole s údajmi, ktoré chceme odoslať JSON odpoveďou $ Data \u003d Array ("Counter" \u003d\u003e 5,); // Preložiť Mass v JSON $ JSON_DATA \u003d JSON_ENCODE ($ ÚDAJE); // Nastavte hlavičku kódovania a typu obsahu ("Typ obsahu: Aplikácia / JSON; Charset \u003d UTF-8"); // JSONP - Urobiť JSONP ECHO $ \u200b\u200b_GET Objekt ["Callback"]. "(" $ json_data ");";

      Uložte súbor ako protispoly a vyplňte ho na serveri SITE2.RU

      JavaScript.

      Teraz musíte zavolať $ .ajax v jQuery, ako je opísané nižšie:

      $ (Dokument) .Ready (funkcia () ($ .ajax ((typ: "Získajte", URL: "http://site2.ru/counter.php?cllback\u003d?", DataType: "JSONP", Úspech: Funkcia (údaje) ($ (". Text .Counter"). HTML (dáta.counter);)));););

      Ak nezadáte funkciu spätného volania a jednoducho napíšte Callback \u003d? - Názov funkcie JQuery je automaticky nahradený, ale môžete tiež explicitne zadať názov funkcie, napríklad callback \u003d Parcefunkcia.

      Teraz spustite súbor HTML na mieste1.ru. Musíte získať odpoveď zo servera pomocou údajov JSON. Môžete tiež použiť tento krížový prehliadač Ajax pre $ .getjson, $ .ajax, $ .post a $.

      P.S. Nezabudnite nahradiť stránku2.ru - na názov vášho vzdialeného servera, ku ktorému urobíte požiadavku.

      Ak máte akékoľvek otázky alebo dodatky, napíšte v nižšie uvedených komentároch.