Jquery AJAX iegūst datus no cita domēna. Krustains domēns Ajax ar jQuery

2. decembris. , 2016

Kad es uzrakstīju rakstu Kā izveidot iebūvētos logrīkus vietējā JavaScript un PHP. Un viss būtu labi, bet viens brīdis to neietekmēja. Šādus logrīkus var izmantot mūsu pašu vietnē, bet vairāk interesanti izveidot tos trešo pušu resursiem. Bet šajā gadījumā vēlamo datu pārlūkprogrammu ir jāielādē no cita domēna - tas ir starpdomēnu Ajax pieprasījumi.

No Frontend programmētāju viedokļa starpdomēnu pieprasījumi neatšķiras no parastiem. Bet bekend ir atšķirība. Kāpēc ar viņiem ne viss ir tik vienkārši un kā tos īstenot - lasiet par to rakstā.

Mēs cenšamies iegūt datus no cita domēna

Vienkāršībai, apsveriet pieprasījumus. Pieņemsim, ka serveris atrodas noteiktu HTML failu, kuru EDGE mums kā lejupielādēt Ajax-Ohm no cita domēna ..html. Atveriet to un pārliecinieties, vai tas ir patiešām pieejams - (tiek atvērts jaunā cilnē). Tas ir regulārs div ar tekstu "saturs no template.html".

Un tagad saņemsim šo HTML-Ku Ajax-Ohm tieši no pārlūkprogrammas konsoles.

Mēs nebūsim bated ar dzimtā JavaScript, un braucot ar pieprasījumu, izmantojot jQuery.Get () un dot konsoli, ko viņi saņēma, atbildot no servera.

$ .. HTML ", funkcija (atbilde) (Atbilde)));

Atvērt Tagad Izstrādātāju rīki pārlūkprogrammā un cilnē Konsolē, veiciet šo pieprasījumu.

Jūs redzēsiet par šādiem

Viss ir brīnišķīgs, nosūtīts pieprasījums, saņēma atbildi. Šķiet, ka tas varētu būt vieglāk? Un tagad dodieties uz jebkuru citu vietni, kur jquery ir savienots un mēģināt to darīt. Tikai nevis HTTPS vietnē, kāpēc - mācīties raksta beigās.

Piemēram, es pārbaudīju pieprasījumus par Bombardir.ru futbola vietni. Un tajā pašā laikā viņš tika atbrīvots, kas atkritumi neietilpst konsolē pat šādās pazīstamās vietās. Tomēr saruna nav par to.

Veikt pieprasījumu no cita domēna, un jūs redzēsiet konsoli vairs šādu acīmredzamu attēlu. Saka, nav iespējams lejupielādēt, nav datu un kopumā bēdas.

Ja atverat cilni Network un atrodat atbilstošu vaicājumu, jūs redzēsiet, ka serveris pat atgriezīsies pie mums 200 ok
Un nav satura faila. Kas ir nozveja?

Kas notika nepareizi un kādi būs lēmums

Nozveja ir tāda, ka interneta politika neļauj pārlūkprogrammām izvilkt datus no jebkuriem resursiem. Papildus gadījumiem, kad šie resursi paši ir ieinteresēti izplatīt konkrētus datus.
Mūsu lieta ir tāda. Lai izmantotu HTML failu no jebkuras vietas, jūs vēlaties, lai nosūtītu piekļuves kontroles-ļauj izcelsmes HTTP galveni, pieprasot failu.

Tagad jautājums ir par to, kā to izdarīt. Ja jums (vai administratoriem) ir piekļuve Nginx, tad vienā virzienā, lai konfigurētu šīs galvenes piesārņojumu tīmekļa servera rīkiem. Jūs dodaties uz administratoriem ar atbilstošu pieprasījumu vai Google sev vēlamo konfigurāciju jūsu tīmekļa serveri.

Ja nav šīs piekļuves, piemēram, piemēram, gandrīz jebkurā hostinga pakalpojumu sniedzējā lētā tarifā, tad jums ir nepieciešams izkļūt. Un šeit PHP nāk glābšanā. Ideja ir mest mūsu HTML-KU uz PHP failu, kas sedz ar nosaukumu, un dos vēlamo saturu.

Izrādās, ka jūs izveidojat faila template.php un pirmo virkni rakstīt PHP komandu

Galvene ("Access-Control-Atļauja izcelsme: *");

Saturs no Template.php.

Tas ir, template.php saturs būs tik, neaizmirstiet par PHP-piedurknēm un kronšteiniem

Tiek izveidots tīmekļa vietnes fails (tiek atvērts jaunajā cilnē). Tagad mēģināsim to pieprasīt no cita domēna un redzēt, kas notiks

$. PHP ", funkcija (atbildība));

Kā jūs varat redzēt, viss darbojas labi - fails ir ielādēts!

Paskaties tīkla cilnē.
Lūdzu, ņemiet vērā, ka piekļuves kontroles nodrošinājuma galvene ir ieinteresēta atbildes galvenes blokā.

Kopumā raksts ir pabeigts. Tā joprojām ir apkopot domas ķekars un pievienot vairāk informācijas.

Apkopot un apkopot

  • 1. Nav iespējams viegli pieprasīt AJAX jebkuru resursu no cita domēna
  • 2. Sūtīt piekļuves kontroles nodrošinājuma galveni visiem resursiem, uz kuriem var būt nepieciešama piekļuve.
  • 3. Dariet to ar tīmekļa serveri vai php
  • 4. PHP, šī galvene tiek nosūtīta ar galvenes komandu ("Access-Control-Atļaut-Izcelsme: *")
  • 5. Piekļuves kontroles-Atļauts-Izcelsme: * - Atļaut piekļuvi visiem domēniem, piekļuves kontroles-atļauju izcelsmes: site.ru - tikai domēna site.ru
  • 6. Piekļuves kontroles atļauja-Izcelsme tiek nosūtīta pašā PHP faila sākumā, pat pirms citu datu izlaides (kā arī jebkuri citi HTTP virsraksti)
  • 7. "Resurss" ir ne tikai fails ar HTML atzīmi, bet arī jebkuru URL, uz kuru AJAX pieprasījums nāk, piemēram, saņemot JSON datus vai pasta pieprasījumu, lai pievienotu virkni datu bāzes tabulai

Un pēdējais, veicot atsevišķi. Es neesmu mēģinājis izpildīt pieprasījumus no HTTP vietnes. Ar HTTPS nebūs iespējams ielādēt datus no HTTP citam iemeslam - jaukts saturs. Un vietne joprojām ir HTTP vietne ( atjaunināts: Vairs netiek atlikta vietne https)

Tas ir tas, ko jūs redzēsiet konsolē, mēģinot izpildīt to pašu pieprasījumu no jebkuras HTTPS vietnes. Tāpēc, ja jūs gatavojaties iesaistīties iegultās logrīkos vai kaut kas līdzīgs tam, jums noteikti ir nepieciešams ievietot SSL sertifikātu savā tīmekļa vietnē.

jQuery.Ajax () - veic servera pieprasījumu, nesaņemot lapu. Tā ir zema līmeņa metode. liels daudzums Iestatījumi. Tas ir balstīts uz visu Ajax darbu, kas bieži ir vieglāk saprast un lietojams, bet kas joprojām nodrošina ierobežotu funkcionalitāti salīdzinājumā ar šo metodi.

$ .Ajax () atgriež XmlhtttPrequest objektu. Vairumā gadījumu, jums nav nepieciešams strādāt tieši ar šo objektu, bet tas joprojām ir pieejams, ja jums ir nepieciešams pārtraukt pieprasījumu manuāli.

Kā arguments, funkcija $

AJAX pieprasījumam ir divas izmantošanas iespējas:

jQuery.Ajax (URL [, iestatījumi))

Atšķirība no iepriekšējās metodes versijas veido tikai to, ka URL īpašums šeit ir daļa no iestatījumiem, nevis atsevišķs parametrs.

Iestatījumu saraksts (iestatījumi)

  1. pieņem.(Noklusējums: atkarīgs no datatype)
    Tips: objekts.
    Izpildot vaicājumu, galvenes (galvene) norāda atļauto saturu, kas sagaidāmi no servera. Šo veidu vērtības tiks ņemti no pieņemšanas parametriem. Piemēram, šāds piemērs norāda pieļaujamo customType veidiem:

    $

    $. ajax ((

    pieņem: (

    myCustomType: "Pieteikums / x-daži custom-type"

    pārveidotāji: (

    "Teksts MyCustomType": funkcija (rezultāts) (

    atgriezties Newresult;

    datatype: "MyCustomType"

    } ) ;

  2. async. (Noklusējums: TRUE)
    Tips: loģiskā vērtība.
    Pēc noklusējuma visi pieprasījumi tiek nosūtīti asinhroni (tas ir, pēc pieprasījuma nosūtīšanas uz serveri, lapa neaptur savu darbu, gaidot atbildi). Ja jums ir nepieciešams nosūtīt vaicājumus sinhroni, iestatiet šo opciju FALSE. "JSONP" tipa crossdomain pieprasījumus un pieprasījumus nevar veikt sinhronā režīmā. Lūdzu, ņemiet vērā, ka sinhronie pieprasījumi var bloķēt pārlūku izpildes laikā.
  3. bEFORESERT (JQXHR, Iestatījumi)
    Tips: funkcija.
    Satur funkciju, kas tiks saukta tieši pirms AJAX pieprasījuma nosūtīšanas uz serveri. Šī funkcija var būt noderīga JQXHR objekta modificēšanai (in agrīnās versijas Bibliotēkas (līdz 1,5), nevis Jqxhr izmanto Xmlhttprequest). Piemēram, jūs varat mainīt / norādiet nepieciešamos galvenes (galvenes) I.D. JQXHR objekts tiks nosūtīts uz pirmo argumentu funkciju. Otrais arguments nodod vaicājuma iestatījumus.
    BEFORESEND attiecas uz AJAX notikumiem. Tāpēc, ja tajā norādītā funkcija atgriež nepatiesu, Ajax vaicājums tiks atcelts. Beforesend tiek saukta neatkarīgi no vaicājuma veida.
  4. kešatmiņa. (Noklusējums: True, False Datatype "Script" un "JSONP")
    Tips: loģiskā vērtība.
    Ja vēlaties, lai pārlūks nebūtu cache pieprasījums, tad iestatiet šo parametru uz nepatiesu. Lūdzu, ņemiet vērā, ka, ja parametrs ir iestatīts uz FALSE, URL tiks pievienota "_ \u003d" virkne.
  5. pabeigts (jqxhr, textStatus)
    Tips: funkcija.
    Funkcija, kas tiek izpildīta katru reizi pēc Ajax vaicājuma pabeigšanas (pēc panākumiem un kļūdām). Divi parametri tiek pārraidīti funkcijai: JQxhr (bibliotēkas agrīnajās versijās Jqxhr vietā Jqxhr izmanto XmlhtttPrequest) un vaicājuma izpildes statusu (virknes vērtība: "Panākumi", "NotModified", " Kļūda "," Timeout "," Abort "vai" Parsererror ").
    Sākot ar jQuery-1.5, pilnu parametru var pārraidīt ne vienu funkciju, bet funkciju masīvu. Visas funkcijas tiks izraisītas secībā, kādā masīvs ir norādīts.
  6. saturs.
    Tips: objekts.
    Parametrs parādījās jQuery-1,5 ir iestatīts formātā objektā (virkne: regulāra izteiksme) un nosaka, cik jQuery būs izjaukt atbildi no servera, atkarībā no tā veida.
  7. contentType.
    Tips: loģiskā vērtība vai virkne.
    Nosūtot pieprasījumu uz serveri, dati tiek nosūtīti norādītajā formātā ContentType. Pēc noklusējuma, "pieteikums / x-www-form-urlencoded; Charset \u003d UTF-8 ', kas ir piemērots vairumā gadījumu. Ja norādāt šo parametru, tas tiks pārsūtīts uz serveri (pat tad, ja nav nosūtīti dati).
    Ar jQuery-1.6 varat nosūtīt nepatiesu, lai ne instalētu nosaukumu.
  8. konteksts.
    Tips: objekts.
    Objekts, kas būs konteksts pēc vaicājuma izpildes (pārraidīto vērtību uz šo mainīgo). Piemēram, ja jūs norādāt DOM elementu kā kontekstu, tad visi Ajax pieprasījuma apstrādātāji tiks veikti arī kontekstā šī Doma elementa. Šajā piemērā atslēgvārds Tas satur dokumentu.Bybody:

    $ .AJAX ((URL: "Test.html", konteksts: docents.Bybody)). Gatavs (funkcija () ($ (tas)

    $. ajax ((

    uRL: "test.html",

    konteksts: dokuments. Ķermenis.

    ).)). Veikts (funkcija () () ()

    $ (tas). Addclass ("darīts");

    } ) ;

  9. pārveidotāji.(Noklusējums: ("* Teksts": logi
    Tips: objekts.
    Parametrs parādījās jQuery-1.5 nosaka, ar palīdzību, ko funkcijas tiks pārvērsti uz vērtībām no viena veida, citā.
  10. crossdomain.(Noklusējums: False par to pašu domēnu, TRUE CRUSSDOMAINS)
    Tips: loģiskā vērtība.
    Parametrs parādījās jQuery-1.5, ja jūs vēlaties veikt savstarpēji domēna vaicājumu (piemēram, JSONP) tajā pašā domēnā, kas ir taisnība crossdomain iestatījumu. Tas ļauj, piemēram, lai padarītu servera novirzīšanu uz citu domēnu.
  11. dati.
    Tips: objekts, virkne vai masīvs.
    Dati, kas tiks pārsūtīti uz serveri. Ja dati nav virkne, tad tie tiek pārvērsti vaicājuma virknē. Lai saņemtu pieprasījumus, dati ir pievienoti URL. Objektam jābūt galvenajam / vērtības pārim. Ja masīva vērtība, tad jQuery pasūtījumu vērtības atkarībā no tradicionālā iestatījuma. Piemēram, pēc noklusējuma (foo: ["BAR1", "BAR2"]) pārvēršas & Foo \u003d Bar1 & Foo \u003d Bar2.
  12. dataFilter (dati, tips)
    Tips: funkcija.
    Funkcija, kas pirms procesa datus nosūtīti ar serveri, t.i. Tai vajadzētu spēlēt filtra lomu un atgriezt tīrīto virkni. Šai funkcijai tiek nosūtīti divi parametri: minētie dati un parametru vērtība datu tips.. Datfilter norādītajai funkcijai jāatgriež pārstrādātie dati.
  13. datu tips. (Noklusējums: noteikts automātiski (XML, JSON, Script vai HTML))
    Tips: rinda.
    Paredzams, ka ir paredzēts saņemt atbildi no servera. Ja tas nav norādīts, jQuery mēģinās to automātiski noteikt, izmantojot MIME serveri.
  14. kļūda
    Tips: Funkcija
    Funkcija, kas tiks saukta, ja serverim neizdodas pabeigt pieprasījumu. Tas nodrošina trīs parametrus: JQxhr (līdz 1,5 tiek izmantots Xmlhttprequest), virkne ar aprakstu par kļūdu, kas notika, kā arī izņēmuma objektu, ja tas noticis. Iespējamās otrā argumenta vērtības: "Timeout", "kļūda", "Notmodificēts" un "Parsererror" (neparedzētajos gadījumos nulles vērtība var tikt atgriezta). Sākot ar jQuery-1.5, šis parametrs var veikt gan vienu funkciju, gan funkciju klāstu.
    Kļūdas notikums nenotiek, ja Datatype ir vienāds ar skriptu vai JSONP.
  15. globāls (Noklusējums: TRUE)
    Tips: loģiskā vērtība.
    Atbildīgs par Global AJAX pieprasījuma notikumu darbību (piemēram, Ajaxstart vai AjaxStop). Ja iestatāt šo parametru viltus, globāliem notikumiem Šis pieprasījums Tiks saukts.
  16. galvenes.
    Tips: objekts.
    Parametrs parādījās jQuery-1.5 Šeit jūs varat norādīt papildu vaicājumu galvenes (galvenes). Šī iestatījuma vērtības tiks ievadītas pirms BEFORESEND funkcijas, kurā galīgās izmaiņas var veikt virsrakstos.
  17. ifmodified
    Tips: loģiskā vērtība.
    Pārsūtot šo iestatījumu uz True, vaicājums tiks pabeigts ar statusu "Veiksmīga", tikai tad, ja atbilde no servera atšķiras no iepriekšējās atbildes. JQuery pārbauda šo faktu, atsaucoties uz pēdējo modificēto galveni. Sākot ar jQuery-1.4, papildus pēdējā modificētā un "ETAG" ir arī pārbaudīts (abus nodrošina serveris, un tie ir nepieciešami, lai paziņotu pārlūkprogrammai, ka pieprasītie dati no servera netiek mainīti no iepriekšējā pieprasījuma).
  18. izoks
    Tips: loģiskā vērtība.
    Parametrs parādījās jQuery-1.5.1 ļauj iestatīt lapas avota statusu vietējā (it kā tas noticis, izmantojot failu protokolu), pat ja jquery to atzina citādi. Bibliotēka nolemj, ka lapa darbojas vietējā gadījumā šādiem protokoliem: failu, * -Extension un widget. Ieteicams iestatīt izlokālā parametra vērtību globāli - izmantojot $ .AJAXSETUP () funkciju, nevis tajā Individuālo AJAX vaicājumu iestatījumi.
  19. jsiks)
    Tips: rinda vai loģiskā vērtība.
    Definē parametra nosaukumu, kas pievienots JSONP pieprasījuma URL (noklusējums, "Atzvans" tiek izmantots). Piemēram, konfigurācija (JSONP: "Onjsonpload") tiek pārvērsts par daļu no virknes URL "Onjsonpload \u003d?" . Sākot no 1.5 versijas, specifikācija šajā viltos parametru novērš pievienojot URL papildu parametrs. Šādā gadījumā jums ir nepieciešams iestatīt JSONPCALLBACK iestatījumu vērtību. Piemēram, tas ir: (JSONP: FALSE, JSONPCALLBACK: "CALKBACKNAME").
  20. jsonpcallback
    Tips: virkne vai funkcija.
    Definē funkcijas nosaukumu, kas tiks saukta, atbildot uz serveri uz JSONP pieprasījuma. Pēc noklusējuma jQuery rada patvaļīgu nosaukumu šīs funkcijas, kas ir vēl labāka iespēja, kas vienkāršo darbību bibliotēkā. Viens no iemesliem, kādēļ tas ir, lai precizētu savu JSONP vaicājumu apstrādes funkciju, ir uzlabot caching saņemt pieprasījumus.
    Sākot ar Jquery-1.5, varat norādīt funkciju šajā parametrā, lai apstrādātu servera atbildi pats. Šajā gadījumā norādītajai funkcijai ir jāatdod no servera saņemtajiem datiem (norādītajā funkcijā tie būs pieejami pirmajā parametrā).
  21. metode (noklusējums: "Get")
    Tips: rinda.
    Parametrs parādījās JQuery-1.9.0 ļauj norādīt pieprasījuma veidu serverim ("Post", "Get", "Put")
  22. mimetips.
    Tips: rinda.
    Parametrs parādījās jQuery-1.5.1. Šajā laukā jūs varat norādīt datu veidu, kādos ir paredzēta atbilde no servera, nevis xhr
  23. parole.
    Tips: rinda.
    Parole autentifikācijai uz servera, ja nepieciešams.
  24. processData. (noklusējuma taisnība)
    Tips: loģiskā vērtība.
    Pēc noklusējuma serverim nosūtītie dati tiek pārvērsti no objekta vaicājuma virknē (URL formāts: fname1 \u003d vērtība1 un fname2 \u003d vērtība2 & ...) un nosūtīts kā "lietojumprogrammu / x-www-forma urlencoded". Ja jums ir nepieciešams nosūtīt DOM dokumentu vai citus datus, kurus nevar pārvērst, lai iestatītu procesa opciju FALSE.
  25. scriptcharset.
    Tips: rinda.
    Attiecas tikai uz AJAX saņemt vaicājumus, Datatype var būt vai "JSONP" vai "skripts". Ja serveris uz trešās puses domēna izmanto kodējumu, kas nav jūsu, jums ir jānorāda kodēšana trešās puses serveri.
  26. statusa kods.
    Tips: objekts.
    Parametrs parādījās jQuery-1.5.0 tvaika komplekts, kurā vaicājuma kodi tiek salīdzināti ar funkcijām, kas tiks radītas. Piemēram, kodam 404 (neeksistē), ekrānā varat izdarīt ziņojumu:

    $ .ax (Statuscode: (404: funkcija () (brīdinājums (lapa nav atrasts ");)));

    $. ajax ((

    statuscode: (

    404: Funkcija () ()

    brīdinājums (lapa nav atrasts ");

    } ) ;


    Ja pieprasījums tiek pieņemts veiksmīgi, pēc tam kā parametrs, anonīma funkcija Tas būs tādi paši parametri, ka funkcijas veiksmīgas izpildes vaicājuma (norādīts panākumu parametrā), un kļūdas gadījumā tāpat kā kļūdu funkcijas.
  27. panākumi (dati, textStatus, JQxhr)
    Tips: funkcija, masīvs.
    Funkcija, kas tiks saukta par veiksmīgas servera pieprasījuma pabeigšanas gadījumā. Aizņem 3 argumentus:
    • dati (dati), ko nosūta servera un pirms apstrāde;
    • virkne ar izpildes statusu (textStatus);
    • objekts jqxhr (versijās līdz 1.5, nevis JQXHR, izmanto XmlhttPrequest). No jQuery 1.5, nevis viena funkcija, šis parametrs var veikt virkni funkciju.
  28. pārtraukums.
    Tips: numurs.
    Laiks gaida atbildi no servera milisekundēm. Pārrakstīt globālais iestatījums Tas pats parametrs $ .AJaksetup (). Ja šis laiks ir pārsniegts, pieprasījums tiks pabeigts ar kļūdu un radīsies kļūdas pasākums, kas būs statuss "TimeOut".
    Laiks tiek skaitīts no brīdī, kad zvana $ .AJAX funkciju. Var gadīties, ka šajā brīdī tiks uzsākti vairāki citi pieprasījumi un pārlūks atlikt pašreizējā pieprasījuma izpildi. Šādā gadījumā taimautu var pabeigt, lai gan patiesībā pieprasījums netika uzsākts.
    Jquery-1.4 un jaunākiem, gaidīšanas laika beigās XMLHTTPrequest objekts pāriet uz kļūdu stāvokli un piekļuvi tās laukiem var izraisīt izņēmumu. Firefox 3.0+, skripts un JSONP vaicājumi netiks pārtraukti, kad gaidīšanas laiks ir pārsniegts. Tie tiks pabeigti pat pēc šī laika beigām.
  29. tradicionāls
    Tips: loģiskā vērtība.
    Iestatiet šī parametra vērtību, lai izmantotu tradicionālos konversijas parametrus (serialization).
  30. veids(Noklusējums: "Get")
    Tips: rinda.
    Analogā parametra metode. Parametrs tiek izmantots jQuery zem 1.9.0
  31. url (Noklusējums: pašreizējās lapas adrese)
    Tips: rinda.
    Definē adresi, uz kuru tiks nosūtīts pieprasījums.
  32. lietotājvārds.
    Tips: rinda.
    Lietotājvārds autentifikācijai serverī, ja nepieciešams.
  33. xhr.(Noklusējums: ActiveXObject IE, XMLHTTPREQUEST citās pārlūkprogrammās)
    Tips: funkcija.
    Funkcija, kas nodrošinās xmlhttprequest objektu. Pēc noklusējuma IE pārlūkprogrammas šis objekts ir ActiveXObject, un citos gadījumos tas ir xmlhtttprequest. Ar šo parametru jūs varat ieviest savu šī objekta versiju.
  34. xhrfields.
    Tips: objekts.
    Parametrs parādījās jQuery-1.5.1 pāru kopums (nosaukums: zīme), lai mainītu / pievienotu vērtības atbilstošās objekta laukus objectxmlhttprequest. Piemēram, jūs varat iestatīt savu withcredentials īpašumu, veicot crossdomain vaicājumu:

    $

    $. ajax ((

    uRL: A_CROSS_DOMAIN_URL,

    xhrfields: (

    withcredentials: TRUE.

    } ) ;

Kā minēts iepriekš, $ .AJAX () Visvienkāršākā metode, un visas turpmākās metodes ir tikai tās iesaiņojums. Ļoti daļa nav nepieciešams, lai izsauktu šo funkciju, jo Ir augstāka līmeņa alternatīvas, piemēram, un. Tie ir vieglāk saprotami un lietošanā, lai gan $ .Ajax () ir elastīgāks risinājums.

Vieglākais veids, kā izmantot, būs $ .Aax () zvanu, nenorādot parametrus:

$. ajax ();

Pasākumu apstrādātāji

BEFORESEND, ERROR, DATAFILTER IESTATĪJUMI, Panākumi un pabeigšana ļauj instalēt notikumu apstrādātājus, kas notiek noteiktos laikos katru AJAX vaicājumu.

  • bEFORESEND.notiek tieši pirms pieprasījuma nosūtīšanas uz serveri;
  • kļūda notiek vaicājuma neizpildes gadījumā;
  • datafilter. notiek laikā, kad ierodas datus no servera. Ļauj apstrādāt servera nosūtītos datus;
  • panākumi. notiek pēc veiksmīgas pieprasījuma pabeigšanas gadījumā;
  • pabeigta.notiek gadījumā, ja tiek pabeigta pieprasījuma.
  • Panākumi: funkcija () (

    brīdinājums ( "Dati ir veiksmīgi nosūtīti.") ;

    } ) ;

    Uzmanību! Iepriekš minētie iestatījumi (), .Error () un- Tomēr jūs varat instalēt apstrādātājus, sākot ar jQuery-1.8. Šīs trīs metodes būs nevēlamas lietošanai.

    Datu tips

    $ .Aax () funkcija uzzinās par datu servera tipu, kas nosūtīts no paša servera (MIME rīkiem). Turklāt ir iespējams personīgi norādīt (precizēt) kā interpretēt šos datus. Tas tiek darīts, izmantojot parametru. datu tips.. Šī parametra iespējamās vērtības:

    • "XML" - Iegūtais XML dokuments būs pieejams teksta formā. Jūs varat strādāt ar viņu standarta līdzekļi jQuery (kā arī ar HTML dokumentu).
    • "HTML" - Saņemtais HTML būs pieejams teksta formā. Ja tas satur skriptus tagos
      Kaut kas uz servera vietni2.ru -

      PHP.

      Tagad mums ir jāizveido JSON objekts ar datiem, PHP. Pieņemsim, ka vietne2.RU serverī mēs pieprasīsim to no Site1.RU un saņemsim tikai numuru (kaut ko skaitu). Lūdzu, ņemiet vērā, ka mums ir jāizveido JSONP objekts, nevis parastais JSON Objekts.

      // izveidot masīvu ar datiem, kurus mēs vēlamies nosūtīt JSON ar atbildi $ dati \u003d masīvs ("counter" \u003d\u003e 5,); // tulkot masu JSON $ JSON_DATA \u003d JSON_ENCODE ($ dati); // Iestatiet kodēšanas un satura tipa galveni ("Content tipa: pielietojums / JSON; Charset \u003d UTF-8"); // JSONP - padarīt JSONP echo $ _get objektu ["Atzvans"]. "(" $ JSON_DATA ");"; ";

      Saglabājiet failu kā counter.php un aizpildiet to vietnē2.ru serverī

      JavaScript.

      Tagad jums ir nepieciešams zvanīt $ .Ajax jquery kā aprakstīts tālāk:

      $ (Dokuments). Nav (funkcija () ($ Funkcija (dati) ($ (". Teksts .counter"). HTML (Data.Counter);)));););

      Ja jūs nenorādāt atzvanīšanas funkciju, un vienkārši rakstiet atzvanīšanu \u003d? - Jquery funkcijas nosaukums tiek automātiski aizvietots, bet jūs varat arī skaidri norādīt funkcijas nosaukumu, piemēram, atzvanīt \u003d parsekunication.

      Tagad palaidiet HTML failu vietnē1.ru. Jums ir jāsaņem atbilde no servera ar JSON datiem. Jūs varat arī izmantot šo pārrobežu pārlūkprogrammu Ajax par $ .getJson, $ .AJAX, $ .post un $ .get.

      P.S. Neaizmirstiet nomainīt vietni2.ru - uz attālās servera nosaukumu, uz kuru jūs iesniedzat pieprasījumu.

      Ja jums ir kādi jautājumi vai papildinājumi, rakstiet tālāk norādītās komentārus.