Òdinatè, Pwogram
Ajax - egzanp. Ajax Scripts
Entènèt la bay vizitè a vizibilite a nan chak resous ki anime nan yon rezo, ak navigatè - aksè via pwotokòl rezo a, mekanism rele nan Scripts endividyèl, transmisyon / resepsyon nan enfòmasyon. Mete nan paj ki fè moute sit la, te gen yon rasin komen - yon lyen inik (non domèn, yon adrès ne inik).
Pa gen pwoblèm resous la reponn a vizite statics oswa dynamique jenere yon repons. Menm si fòm nan ak kontni nan paj sa yo depann sou nenpòt ki kondisyon, endivizib inite nan sèvè kominikasyon ak kliyan (navigatè a) se fini HTML-kode dokiman an, imaj, dra style, ak lòt dosye nesesè kontni ak anviwònman. Si gen yon bagay ki mal, navigatè a montre tout sa ki "jere" jwenn analizan ak egzekite.
Anpil teknoloji prometteur te parèt pou yon tan long, men yo te enjisteman bliye oswa ou pa yo te itilize byen. Premye Ajax (egzanp sèvi ak objè a XMLHttpRequest) parèt anpil ane de sa, men siksè nan ak t'ap nonmen non te pita anpil.
Tout oswa sèlman ki sa ou bezwen
Nan vèsyon la klasik nan sit la - non an, IP-adrès la ak yon ap mennen (tout synonyms deziyen pwen an menm nan espas ki la Entènèt). Ki sa ki bay manti dèyè paj prensipal sa a - te panse: sou inisyativ pwòp yo yon modèn "designer", ki pa t 'menm mande poukisa li se konsa? Poukisa sit la se paj prensipal la soti nan kote ou ka jwenn nan nenpòt lòt? Opsyon sa a - klèman pa ideyal, li se kontni an espesifik ak fonctionnalités a vrè.
Senpleman mete, si yon moun bezwen yon dantis, li se adrès la dwa pou yon rezon espesifik, olye ke nan kwizin nan pou operasyon epi yo pa nan bibliyotèk la pou konsiltasyon terapis. Nan plas la kote yon sèl sa a te tounen soti, li wè, men se pa resevwa yon klinik dantè nan plen. Pi bon an ki ka atann yon vizitè - rejis la ak direksyon nan (chemen an egzak) nan doktè a. Yo, epi sou tèren an (ke yo rive) kapab chanje kòm yon doktè, ak destinasyon.
Men, isit la sit la anjeneral toujou chaje nan minisyon plen, pa gen anyen chanje sou loading, pran an kont tan an ke yon moun te vini ... Men, menm nan ka a kote li se yon klinik lavi reyèl, premye fwa a ou ale nan yon kliyan nouvo nan bay ase paj enfòmasyon , kontak, ak ... rejis la fenèt yo kapab bay ki te vizit la sou sit-la fè pandan koupe-èdtan, kòm preskri nan men doktè a se pa disponib, se yon randevou pou yon ti tan te fè nan yon biwo diferan ...
Point nan espas ki la Entènèt
Repons lan klasik nan resous la nan espas ki la Entènèt - an repons a yon demann yo voye bay yon paj sit (anjeneral kay), ak Lè sa lòt la, nan demann lan nan vizitè a. Sit sèvè tou gen imaj, Styles, JavaScript Scripts kòd, PHP, elatriye Se pa tout PHP-dosye fè paj, kèk nan yo ka reponn a Ajax demann :. resevwa, pwosesis epi voye enfòmasyon.
Ekri yon script yon menen. Men, ap resevwa nan pwen an nan kontwòl nan espas ki la Entènèt, li enposib detèmine ki moun ki ak pou sa rezon ki fè adrese, ki se aktive se non an, IP-adrès ak lyen. Nenpòt mouvman sou rezo a pran plas nan lojisyèl, sitou nan yon navigatè, men tou, nan robo yo ki gen orijin diferan ak destinasyon nan lòt sit nan aksyon.
Script, gen kontwòl, ka avèk presizyon konnen sèlman: yon vizit nan sa navigatè vizitè a vin rive, ak yon referans ki soti nan ki IP-adrès, ak prezans nan bonbon. Se sèlman lèt la ka bay enfòmasyon tankou yo fòme paj prensipal la, men se sèlman si gen vizitè a deja isit la. Nan tout lòt ka li se posib yo jenere sèlman repons la an jeneral soti nan sèvè an. Ajax-egzanp ki fasil jwenn sou entènèt la, ta dwe itilize ak anpil atansyon. Erè nan (itilize a) nan objè a XMLHttpRequest swiv se pa fasil.
Repons lan an jeneral ak dyalòg la prive
repons la an jeneral soti nan sèvè a - yon paj ki komen yo, refere yo kòm direktè lekòl la nan sa yo rele endèks la, epi li kòmanse ak yon sit ki se nan akwochaj ak lyen ki mennen li nan paj sa yo lòt ki disponib. Sepandan, si vizitè a konnen non yo nan paj sa yo lòt yo, yo se nan konpreyansyon l 'la pral pa mwens enpòtan pase yon deziyen pwomotè la. Isit la se modèl la klasik, tout nan yon fwa: konsepsyon a an jeneral ak fonctionnalités ki konsantre sou tout vizitè yo.
Prive dyalòg - yon kontinyasyon nan sesyon-an anvan nan vizitè a. Sou sit la deja konnen sa li te fè, pou l 'te enterese nan sa ki te a paj epi mete l nan memwa l', te ekri yon bagay nan bonbon navigatè.
Li itilize de debaz demann nan sèvè a nan download sit la ak travay avè l ': POST ak JWENN. rezilta nan rechèch se yon paj tout antye. Nan paj la ki kapab lakòz, vizitè a ka aktive sa yo oswa lòt evènman ke yo configuré sou aksyon an nan sèten eleman paj.
eleman Evènman paj
paj eleman ka kle nan jwenn enfòmasyon, siyifikasyon - pran sa ki nan yon jaden tèks ak jwenn ke li te ekri yon vizitè. evènman an ka rive sou yon atik meni, foto, bwat tèks. Nan nenpòt ka, yo pral JavaScript-fonksyon dwe kouri, sa ki ka fè Ajax-demann jan sa a:
InitXML ( '../ Mphp / scSrvPhpWord.php? CTask = GoPage' + '& cOwnerCode =' + cOwnerCode
+ '& CSessionCode =' + cSessionCode + '& cActiveItem =' + cActiveItem);
Se konsa, se InitXML) fonksyon (sa defini jan sa a (varyab scXHR var dwe dekri deyò nan fonksyon an):
fonksyon InitXML (scURL) {
scXHR = nil;
si (window.XMLHttpRequest)
{eseye
{ScXHR = nouvo XMLHttpRequest ();
} Trape (e) {}
} lòt moun
si (window.ActiveXObject)
{eseye
{ScXHR = nouvo ActiveXObject ( 'Msxml2.XMLHTTP');
} Trape (e)
{eseye
{ScXHR = nouvo ActiveXObject ( 'Microsoft.XMLHTTP');
} Trape (e) {}
}
}
si (scXHR)
{
scXHR.open ( 'JWENN', scURL);
scXHR.onreadystatechange = WaitReplySC;
scXHR.send (nil);
};
}
fonksyon sa a pran yon URL ak inisye yon demann pou li. Asynchrone repons ap vini le pli vit ke pral satisfè script la espesifye nan URL la (nan ka sa a - scSrvPhpWord.php, ki chita nan ../Mphp/ katab relatif nan rasin nan sit-la), epi yo pral kòmanse WaitReplySC) fonksyon (, ki ale nan D 'a nan sèvè XML repons lan-, ki gen ladan tit la ak kontni.
repons sèvè
Aktyèlman sèvè a se yon PHP-script - yon pwogram ki kòmanse ak enstalasyon an nan kondisyon sa yo esansyèl, download enstalasyon ki nesesè, pre-tretman, sa ki depan de rezon ki pwomotè:
Espas non PhpOffice \ PhpWord;
ini_set ( 'display_errors', 1);
error_reporting (E_ALL ^ E_NOTICE);
ignore_user_abort (vre);
set_time_limit (12);
sèvi ak PhpOffice \ PhpWord \ MphpObj \ scDocuments;
require_once 'PhpOffice / PhpWord / Autoloader.php';
\ PhpOffice \ PhpWord \ otoloade :: enskri ();
Reprezante nan konmansman an nan yon mak ki endike nenpòt ki erè, entèdi kanpe yon script lè itilizatè a journaux nan epi li kouche yon limit tan sou fè ka bouk - 12 segonn. Next bibliyotèk lyen PhpOffice \ PhpWord pou dokiman * doso.
Menm jan yo montre pi wo a Ajax-defi ( '... cTask = GoPage' + '& cOwnerCode =' + cOwnerCode + '& cSessionCode =' + cSessionCode + '& cActiveItem =' + cActiveItem) - kat jwenn-varyab yo, ki ka pa bezwen ta dwe tcheke disponiblite aktyèl yo:
$ CTask = (ise ($ _ [ 'cTask'] JWENN))? $ _GET [ 'cTask']: '';
$ COwnerCode = (ise ($ _ JWENN [ 'cOwnerCode']))? $ _GET [ 'cOwnerCode']: '';
$ CSessionCode = (ise ($ _ JWENN [ 'cSessionCode']))? $ _GET [ 'cSessionCode']: '';
$ CActiveItem = (ise ($ _ JWENN [ 'cActiveItem']))? $ _GET [ 'cActiveItem']: '';
Apre fè script nan aksyon preparasyon pou deside:
switch ($ cTask) {
ka 'GoPage': // (sa a se yon defi pandan premye download nan oswa rafrechi paj la)
$ COwnerCode = 'cOwner';
$ CSessionCode = 'cSession';
'CContents' $ CContents =;
$ CStatus = 'cStatus';
$ CHtml = ikonv ( 'utf-8', 'CP1251', 'kodaj eleman ");
$ CActiveItem = ikonv ( 'utf-8', 'CP1251', 'varyab');
$ CReply = "scSrvRM | GoPage | seri | {$ cOwnerCode}` {$ cSessionCode} | {$ cContents} `{$ cStatus} | {$ cHtml} | {$ cActiveItem}";
kraze;
}
ak yon pati final la nan script la:
header ( "Content-jan de: tèks / xml; aksepte-charset = utf-8");
header ( "Cache-kontwòl: pa gen okenn-kachèt");
repete '
$ CReply = ikonv ( 'CP1251', 'utf-8', $ cReply); // konvèsyon soti nan 'CP1251' nan 'utf-8'
eko $ cReply;
Lè w repons kliyan
Nan paj sa a, ki chaje nan navigatè a, li te jwenn li ke le pli vit ke sèvè a ap prepare yon repons, li pral trete fonksyon WaitReplySC:
fonksyone WaitReplySC () {
eseye {
si (scXHR.readyState == 4) {
si (scXHR.status == 200) {// pwosesis repons
var TestReply = scXHR.responseText;
si ((TestReply.indexOf ( 'Analyzes erè')> 0) ||
(TestReply.indexOf ( 'Avi')> 0)) alèt (scXHR.responseText);
var CDATA = scXHR.responseText;
var ADATA = cData.split ( '|');
var cCmd = ADATA [1];
var CPOs = ADATA [2];
var aOwnerSession = ADATA [3] .Fann ( ' `');
cOwnerCode = aOwnerSession [0];
var cSessionCode = aOwnerSession [1];
var aContentStatus = ADATA [4] .Fann ( ' `');
var cContent = aContentStatus [0];
var cStatus = aContentStatus [1];
var cHTML = ADATA [5]; // sèvè HTML-repons
var cVarValues = ADATA [6]; // varyab pou Fòm
chanje (cCmd) {
ka 'GoPage':
var dTestLine = document.getElementById ( 'scTestLine');
dTestLine.innerHTML = 'Reply = [' + cOwnerCode + ','
+ CSessionCode + ','
+ CContent + ','
+ CStatus + ','
+ CHTML + ','
+ CVarValues + ']';
kraze;
}
} Lòt Bagay {
. Document.getElementByID ( 'scAreaStatus') innerHTML = "Erè !!!";
}
}
} Trape (e) {}
}
Se konsa, lè l sèvi avèk Ajax-egzanp yo, se paj la chaje nan navigatè jwenn (nan scTestLine eleman):
Reply = [cOwner, cSession, cContents, cStatus, eleman kodaj valè varyab]
Sou reprezantasyon an nan kòd, jQuery ak WordPress
Page nan navigatè a ak tèks la script ekri nan utf-8, pou itilize ikonv () fonksyon konvèti karaktè Ris. Rès la nan kilè eskèlèt la reprezante pa kòd se trè senp epi yo ka byen fasil repete pou nenpòt ki rezon an patikilye.
Sijè a chanje sèlman nan repons a pwosesis sèvè WaitReplySC () fonksyon ak kòd la script aktyèl ki jenere repons lan. yo apèl fonksyon InitXML (pou yon scURL patikilye ak done ki gen rapò ak li) mete yo nan pòtè evènman sou eleman yo paj ak defini siyifikasyon an nan eleman sa yo.
Prezante egzanp sou Ajax-oryante nan "manyèl" sèvi ak teknoloji.
Nan divès kalite sistèm jesyon kontni (SMS) kapasite yo ki dekri nan diferan fason, tankou yon règ, nan style a nan yon espesifik patikilye. Pou egzanp, jQuery Ajax apèl posiblite yo reyalize jQuery.ajax () fonksyon nan swa yon nivo ki pi wo: jQuery.get () ak jQuery.post (). se paramèt la transmèt url ak anviwònman (seri kle pè + valè). jQuery.ajax () retounen XMLHttpRequest-objè.
JQuery swiv rezilta yo nan pwopoze fonksyon-metòd yo: XHR.done () - fini nan siksè nan demann lan. XHR.fail () - manyen erè.
jqXHR.done () metòd yavlyatsya altènatif kap okipe konplete avèk siksè nan Ajax-demann. Ranplase demode jqXHR.success () metòd.
Menm jan an tou, itilize nan sou Wordpress Ajax-teknoloji. Isit la, tout bagay te anjandre tèt li nan sistèm nan jesyon kontni, ou sèlman bezwen sèvi ak estrikti nan pwopoze a. Dokiman yo bay yon deskripsyon detaye.
Ajax Aplikasyon depann esansyèlman sou zouti yo chwazi, byenke ka vèsyon an manyèl dwe itilize nan paralèl oswa nan adisyon nan sistèm lan chwazi jesyon kontni, youn oswa yon lòt vèsyon an jQuery. Lèt la se itil nan travay sou pwòp yo, paske prèske tout SMS modèn sèvi ak li, men chak nan pwòp fason li yo.
Yon egzanp klasik nan aplikasyon
Senp ak eksponansyèl pou sèvi ak Ajax - Cart sou entènèt magazen. paj magazen yo toujou plen ak machandiz, menm si an reyalite yo pa ka. Rupture anjeneral pran konsiderab tan, men lè yon vizitè chwazi yon pwodwi, li ka toujou jis bay moute sou l 'oswa chanje yon sèl la chwazi a, ke sit la se toujou dezirab yo montre byen vit.
Anjeneral li se reyalize nan fòm lan nan panyen pote ale ak mak alantou chwazi atik yo. San yo pa itilize nan Ajax chanjman dinamik nan eleman sa yo se yon pwoblèm.
Ajax-Scripts ki aplike fòmil yo ajoute / retire atik nan kabwa ou, te vin defakto nan anpil SMS.
Pou ka transmisyon done nòmal nan fòm Ajax ap fòme nan yon fason konvansyonèl (pou k ap antre nan non an ak modpas):
Isit la kap okipe: fonksyone scfWelcomeGo () { Li transmèt nan sèvè a valide Non vizitè a ak modpas ou. Script la chèk enfòmasyon an te resevwa nan tablo a itilizatè, epi voye tounen yon repons sou baz la nan ki script an ki enpòtan montre yon mesaj nan paj an (fè yon aksyon) pou itilizatè ki anrejistre, oswa rapò ke pa gen okenn itilizatè sa yo, epi yo bezwen yo dwe anrejistre.
Fòm>
var knam = document.fWelcome.cName.value;
var cPass = document.fWelcome.cPass.value;
InitXML ( '../ Mphp / scSrvPhpWord.php? CTask = CheckWelcome'
+ '& Knam =' + knam
+ '& CPass =' + cPass);
}
Similar articles
Trending Now