So I have a problem that I can't seem to fix, no matter what I do.
The code below SHOULD create a 'slideObj' object and then use it to get some information from a php file called queryslides.php.
However, the code seems to only get to sending the request; it never RECIEVES any data back.
The function outlined in "this.request.onreadystatechange = this.infoReturn;" --which is infoReturn()-- gets called up. Everything before it works great, but it stops after the readyState if-statement part.![]()
(See Below) I also have the SAME code, in non-object form, and it works great. Something about the fact that it's in an object screws it up.
I have my code below, with comments inserted for ease of reading.
What can I do?Code:function slideObj() { this.request = null; //get a request object try { this.request = new XMLHttpRequest(); } catch (trymicrosoft) { try { this.request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (othermicrosoft) { try { this.request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { this.request = null; } } } if (this.request === null) { alert("Error creating request object!"); } function sendGetServer() { this.request.open("GET", "queryslides.php", true); //queryslides.php is a php file with only one active line //<?php //echo "1|r|d~3|s|f"; //?> this.request.onreadystatechange = this.infoReturn; this.request.send(null); alert('Message Requested'); } //HERE IS THE PROBLEM ***** //Every 'alert' is activated, except for those in the two functions below function infoReturn() { if (this.request.readyState == 4) { /* Get the response from the server */ var info = this.request.responseText; alert('Info recieved'); /* Format Data */ this.goOn(info); } } //The next function works by itself, so this isn't really a problem // // Except for the alert line, you can just pretend the goOn() doesn't do anything. function goOn(inf) { alert('working?'); } this.goOn = goOn; this.infoReturn = infoReturn; this.sendGetServer = sendGetServer; } var hey = new slideObj(); hey.sendGetServer(); alert('end');
I have a link to the page here: Proving Grounds
I've figured out one more thing:
infoReturn() IS being activated, however, I have isolated the if-statement as the problem.
I've set the if statement to (this.request.readyState == 4), (this.request.readyState), and (this.request.readyState != 4). NONE of these seem to work.Code:function infoReturn() { alert('This alert is being read, 4 times. 1 for every readyState change, I presume'); if (this.request.readyState == 4){ //HERE is where it won't work }
Please, WHY doesn't this if-statement WORK??!
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks