EdgarsK Posted September 9, 2009 Report Share Posted September 9, 2009 Sveiki mani interesē vai XMLhttp var sadalīt pa daļām ? Manā lapā figurē šads kods try {xmlhttp = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");} catch (e) { /* */ } xmlhttp.onreadystatechange = function(){ if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){ getForm("log"+id).innerHTML="<br>"+xmlhttp.responseText; } } xmlhttp.open("GET", "?step=console¶m="+id+""); xmlhttp.send(null); Viss strādā veiksmīgi, kods tiek lietots 1x sekundē attiecīgi tas visu laiku tiek piepildīts ar sev vajadzīgo informāciju. Pievienoju vēlvienu šādu kodu (kurš strādā uz onclick eventa, adrese ir cita un id kurā informācija ieiet arī ir cita) attiecīgi try {xmlhttp = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");} catch (e) { /* */ } xmlhttp.onreadystatechange = function(){if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){getForm("msgwindow"+id).innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET", "?step=role&x="+id+""); xmlhttp.send(null); Problēma rodas tur, kad tiek ielādēts 2 kods pēc onclick eventa, ļoti bieži gadās kad viņš ielādē pirmā koda saņemtos datus. Ko darīt lietas labā ? Vai nav iespējams kautkā šo visu sadalīt? xmlhttp=newArray; xmlhttp[0]=window.XMLHttpRequest?new .... vai kautkā tamlīdzīgi ? (Paldies jau iepriekš) Quote Link to comment Share on other sites More sharing options...
0 indoom Posted September 9, 2009 Report Share Posted September 9, 2009 (edited) Taisi ajax funkciju piem function ajax(get, func) { var xmlhttp; ... xmlhttp.onreadystatechange = function(){if((xmlhttp.readyState==4)&&(xmlhttp.status==200) && typeof func === 'function'){func(xmlhttp.responseText);} }; xmlhttp.open("GET", get); ... } un tad var izsaukt ar ajax("?step=console¶m="+id, function(response) { getForm("log"+id).innerHTML = '<br>'+response; }); Edited September 9, 2009 by indoom Quote Link to comment Share on other sites More sharing options...
0 codez Posted September 9, 2009 Report Share Posted September 9, 2009 (edited) jquery ir iebūvēta ajax funkcija $.get('',{step:'role',x:id},function(d){$('#msgwindow'+id).html(d);},'html'); Edited September 9, 2009 by codez Quote Link to comment Share on other sites More sharing options...
0 xPtv45z Posted September 9, 2009 Report Share Posted September 9, 2009 xmlhttp jau tur ir vienkāršs mainīgā nosaukums, kam tiek piešķirts objekts. Tu tur praktiski jebko vari rakstīt, tāpat arī veidot masīvu no viņiem. Quote Link to comment Share on other sites More sharing options...
0 EdgarsK Posted September 11, 2009 Author Report Share Posted September 11, 2009 (edited) Tātad atradu manuprāt ideālāko variantu (paldies codez) tātad lietoju jquery $("#div").load("?page=1"); bet tagad ir jautājums. es ar index.php js starpniecibu ieladeju off.php ar noraditajiem mainigajiem kur pretim sanjemu Js kodu, bet lai kods darbotos man vinju japatod citai funkcijai kura veido js ar createElement lai Js darbotos. Kā no $("#div").load("?page=1"); es varu padot sanjemtos datus kadai citai funkcijai? Lai taptu skaidrāks, lūk ir mana funkcija kura darbojās līdz šim /* Grimmer */ function Grimmer() { try {xmlhttp = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");} catch (e) { /* */ } xmlhttp.onreadystatechange = function(){ if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){ GrimTimer__phraser(xmlhttp.responseText); } } xmlhttp.open("GET", "?auction="+celib); xmlhttp.send(null); setTimeout("Grimmer()",1000); } /* Got source */ function GrimTimer__phraser(inner) { if(!getForm("versusScripts")) { var d=document.createElement("script"); d.type="text/javascript"; d.innerHTML=inner; d.id="versusScripts"; document.body.appendChild(d); }else{ document.body.removeChild(getForm("versusScripts")); GrimTimer__phraser(inner); } } Kas man īsti būtu jādara ar $("#div").load(page); lai varētu izmantot šādu GrimTimer__phraser(sanjemtie_dati);? vai tiešām būtu jātaisa apkārtceļš ? $("#mydiv").load("?kautkas"); GrimTimer_phraser(getForm("mydiv").innerHTML); ? Edited September 11, 2009 by EdgarsA Quote Link to comment Share on other sites More sharing options...
0 xPtv45z Posted September 11, 2009 Report Share Posted September 11, 2009 Pēdējais parametrs. http://docs.jquery.com/Ajax/load#urldatacallback Quote Link to comment Share on other sites More sharing options...
0 EdgarsK Posted September 11, 2009 Author Report Share Posted September 11, 2009 bet kā tad sanāk $("#div").load("off.php", function(){ alert(); }); tipa nju ielade vaine bet ka es funkcija lai noradu responseText vai kko tadu ? un man jau arii nevajag lai ieladetu kada elementa jo ieladetu tekstu es padodu talak funkcijai nevis kkadam elementam to sakot es domaju kko shadu $(null).load("off.php",function(){GrimTimer__phraser(responseText);} Quote Link to comment Share on other sites More sharing options...
0 indoom Posted September 11, 2009 Report Share Posted September 11, 2009 $('#div').load("off.php",GrimTimer__phraser); Quote Link to comment Share on other sites More sharing options...
0 xPtv45z Posted September 11, 2009 Report Share Posted September 11, 2009 Tajā linkā jau par to arī ir. :) Funkcijai tu vari pielikt šos 3 parametrus, starp kuriem tad arī ir responseText function (responseText, textStatus, XMLHttpRequest) { this; // dom element } $(null).load("off.php",function(responseText){GrimTimer__phraser(responseText);} Quote Link to comment Share on other sites More sharing options...
Question
EdgarsK
Sveiki mani interesē vai XMLhttp var sadalīt pa daļām ?
Manā lapā figurē šads kods
Viss strādā veiksmīgi, kods tiek lietots 1x sekundē attiecīgi tas visu laiku tiek piepildīts ar sev vajadzīgo informāciju.
Pievienoju vēlvienu šādu kodu (kurš strādā uz onclick eventa, adrese ir cita un id kurā informācija ieiet arī ir cita) attiecīgi
Problēma rodas tur, kad tiek ielādēts 2 kods pēc onclick eventa, ļoti bieži gadās kad viņš ielādē pirmā koda saņemtos datus.
Ko darīt lietas labā ?
Vai nav iespējams kautkā šo visu sadalīt?
vai kautkā tamlīdzīgi ?
(Paldies jau iepriekš)
Link to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.