ajax vraagje
if (xHRObject.readyState == 4) {
alert("verwerklogin");
if (xHRObject.status == 200) {
alert("haha");
var serverResponse = xHRObject.responseXML;
var here = document.getElementById("logininfo");
var inHere = headerDiv.childNodes[0];
inHere = document.createElement('p');
var status = serverResponse.getElementsByTagName("status")[0];
var text = document.createTextNode(status);
inHere.appendChild(text);
here.appendChild(inHere);
}
}
}
de eerste alert werkt maar de 2e niet. Wat kunnen oorzaken zijn dat die status nooit in 200 geraakt?
Ik bak helemaal niks van Ajax, maar volgens mij moet dat if op regel 4 elseif zijn. :)
nope that's not it
Sorry dan weet ik het ook niet, ik zuig met Ajax.
Voor zover ik weet is 200 gewoon klaar, dus blijkbaar is hij nog niet klaar?
tis een internal error (500)
edit: Met de Firebug extensie kun je ook makkelijk zien wat er mis gaat.
Edit2: vragen stellen gaarna via forum niet via PM. En aan MSN doe ik eigenlijk niet, gek genoeg.. alleen voor mijn werk :/
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Enkele tips naar wat ik moet kijken in firebug dan?
Een status 500 zou naar mijn idee niks met je script zelf te maken kunnen hebben.
Maar google het eens, niet zo moeilijk: status 500 ajax
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
if (xHRObject.readyState == 4) {
alert(xHRObject.readyState);
alert(xHRObject.status);
if (xHRObject.status == 200) {
ongeveer de helft van de tijd alert hij 4 + 500, & soms 4 + 200 .... en soms doet hij de 2e alert gewoon niet. Lijkt wel alsof hij vastslaagt na die eerste alert ofzo?
Gewijzigd op 01/01/1970 01:00:00 door cunces v
Waarom maak je geen gebruik van een javascript framework? Het hoeft niet indd, maar het is wel super handig :)
kweetniet :) heb Jquery & dojo geprobeert voor enkele dingen maar ben meer aan gewone js gewent. Voor push-patroon ga ik zowiezo dojo gebruiken.
alert("state 4");
} // <--------- !!!!!!!!!!!
if (xHRObject.status == 200) {
alert("status 200");
}
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function verwerklogin() {
if (xHRObject.readyState == 4) {
alert(xHRObject.readyState);
alert(xHRObject.status);
if (xHRObject.status == 200) {
var serverResponse = xHRObject.responseXML;
alert(serverResponse);
var here = document.getElementById("logininfo");
var inHere = headerDiv.childNodes[0];
inHere = document.createElement('p');
var status = serverResponse.getElementsByTagName("status")[0];
var text = document.createTextNode(status);
inHere.appendChild(text);
here.appendChild(inHere);
}
else {
alert("Probleempje: " + xHRObject.statusText);
}
}
}
if (xHRObject.readyState == 4) {
alert(xHRObject.readyState);
alert(xHRObject.status);
if (xHRObject.status == 200) {
var serverResponse = xHRObject.responseXML;
alert(serverResponse);
var here = document.getElementById("logininfo");
var inHere = headerDiv.childNodes[0];
inHere = document.createElement('p');
var status = serverResponse.getElementsByTagName("status")[0];
var text = document.createTextNode(status);
inHere.appendChild(text);
here.appendChild(inHere);
}
else {
alert("Probleempje: " + xHRObject.statusText);
}
}
}
ik snap 'm echt niet. De enige alert dat ik krijg is die van de readystate (4). Voor de rest gebeurt er niets. (krijg ook geen alert met status)
edit: firebug zegt:
firebug zegt:
xHRObject is not defined
[Break on this error] alert(xHRObject.status);
Gewijzigd op 01/01/1970 01:00:00 door cunces v
@cunces: dan ligt het aan je browser en/of JS code. Want die error zegt namelijk dat het object (xHRObject) niet gevonden is.
maar dan is het toch superraar dat hij één regel ervoor dat object wel vind ?
*Edit: Nee het is niet raar dat als die hem niet vind dat die maar wat doen, ik heb dat ook 1 keer gehad, mee eerste alert deed die maar de 2de niet, en dat kwam door een parameter die niet mee werd gegeven, misschien hier ook?
Gewijzigd op 01/01/1970 01:00:00 door Dennis
function login(formulier) {
var naam=formulier.naam.value;
var paswoord=formulier.paswoord.value;
xHRObject.open("POST", "LoginServlet", true);
xHRObject.onreadystatechange = verwerklogin;
var information = "naam=" + encodeURIComponent(naam) + "&paswoord=" + encodeURIComponent(paswoord);
//xHRObject.setRequestHeader("Cache-Control", "no-cache");
//xHRObject.setRequestHeader("X_USERAGENT", "MijnAjaxApplicatie");
xHRObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
//xHRObject.setRequestHeader('Connection', 'close');
xHRObject.send(information);
}
function verwerklogin() {
if (xHRObject.readyState == 4) {
alert(xHRObject.readyState);
alert(xHRObject.status);
if (xHRObject.status == 200) {
var serverResponse = xHRObject.responseXML;
alert(serverResponse);
var here = document.getElementById("logininfo");
var inHere = headerDiv.childNodes[0];
inHere = document.createElement('p');
var status = serverResponse.getElementsByTagName("status")[0];
var text = document.createTextNode(status);
inHere.appendChild(text);
here.appendChild(inHere);
}
else {
alert("Probleempje: " + xHRObject.statusText);
}
}
}
ik zeg:
xHRObject.onreadystatechange = verwerklogin; & die var heb ik vanbove in m'n js staan..
Ik heb wel een kleine toevoeging voor je script, want stel je gebruikt nu IE of een versie die een mimetype heeft, dan werkt dit niet.
\
Dit gebruik ik altijd, werkt prima( en kan jij misschien goed gebruiken?)
even http_request door jouw XHRObject vervangen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
// See note below about this line
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
// See note below about this line
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
kan je gelijk zien of je XHR wel goed wordt aangemaakt. ;)
Gewijzigd op 01/01/1970 01:00:00 door Dennis