írtam egy ajaxos lekérdezéses példát, de nem jövök rá miért nem megy
egy async lekérdezés lenne, a lekérdezés elmegy, a válasz vissza is jön, de nem fut le a válasz generálására beállított függvény.
itt lennének a részletek
ez lenne az oldal javascript részlete
<script type="text/javascript">
var client = new HttpClient();
client.isAsync = true;
function test() {
client.callback = function (result) {
document.getElementById('target').innerHTML = result;
}
client.makeRequest('data.php','');
}
</script>
<div id="HttpClientStatus" style="display:none">Loading ...</div>
<a href='javascript:test()'> Do it</a>
<div id="target"></div>
Ez lenne a js
function HttpClient () { }
HttpClient.prototype = {
requestType:'GET',
isAsync:false,
xmlhttp:false,
callback:false,
onSend:function () {
document.getElementById('HttpClientStatus').style.display='block';
},
onLoad:function () {
document.getElementById('HttpClientStatus').style.display='none';
},
onError:function (error) {
alert (error);
},
init:function () {
try {
this.xmlhttp = new XMLHttpRequest ();
} catch (e) {
var XMLHTTP_IDS = new Array ('MSXML2.XMLHTTP.5.0',
'MSXML2.XMLHTTP.4.0',
'MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP');
var success = false;
for (var i=0;i< XMLHTTP_IDS.length && !success; i++) {
try {
this.xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]);
success = true;
} catch (e) { alert('NO AJAX');}
}
}
},
makeRequest: function (url,payload) {
if (!this.xmlhttp) {
this.init();
}
this.xmlhttp.open(this.requestType,url,this.isAsync);
var self = this;
this.xmlhttp.onReadyStateChange = function () {
alert('oOoOoOoOo');
self._readyStateChangeCallback (self);
}
this.xmlhttp.send(payload);
if (!this.isAsync) {
return this.xmlhttp.responseText;
}
},
_readyStateChangeCallback:function (obj) {
switch (this.xmlhttp.readyState) {
case 2:
this.onSend();
break;
case 4:
this.onLoad();
if (this.xmlhttp.status == 200) {
this.callback(this.xmlhttp.responseText);
}
else {
this.onError('HTTP Error Making Request: '+'[ '+this.xmlhttp.status+']'+' '+this.xmlhttp.statusText);
}
break;
}
}
}
a this.xmlhttp.onReadyStateChange rész nem fut le, mikor esemény változás történik.
valamiért a code tagok közé tett html kód nem látszik
- 1082 megtekintés
Hozzászólások
onReadyStateChange != onreadystatechange
- A hozzászóláshoz be kell jelentkezni
ezt így benéztem volna ...........
köszi
- A hozzászóláshoz be kell jelentkezni
használj jquery-t. fényévekkel könnyebben tudsz benne dhtml-t kódolni: http://docs.jquery.com/Ajax
- A hozzászóláshoz be kell jelentkezni
55.9 kb plusz a semmiert.
- A hozzászóláshoz be kell jelentkezni
mintha ez ma a broadband mellett számítana.
"semmiért" - azért ez erős. félünk az ismeretlentől?
szerk.: plusz érv bármely js lib mellett a böngészőfüggetlenség.
több évnyi pure-js szívás után az ember megpróbálja megkönnyíteni a dolgát.
- A hozzászóláshoz be kell jelentkezni
köszi megnézem
- A hozzászóláshoz be kell jelentkezni
még annyi lenne, hogy IE-ben az első klikk az jó, de ha megint klikkelek az nem csinál semmit (a többi böngésző az ok)
hogy tudnám közölni az IE-vel, hogy ne a chache-ből húzza az adatot?
van erre valami utasítás, vagy a válasz heder-be kell elmondani neki?
- A hozzászóláshoz be kell jelentkezni
Vagy a válasz fejlécét állítod be megfelelően (nem mindig működik IE-vel), vagy pedig a meghívott url-be kell valami változó dolgot beleraknod, pl. időbélyeget: data.php?ido=23423652, így azt hiszi az IE, hogy más oldalt hívsz meg.
- A hozzászóláshoz be kell jelentkezni