Topic awaiting preservation: AJAX xmlhttp.responsetext and php |
|
---|---|
Author | Thread |
Bipolar (III) Inmate From: |
posted 09-17-2009 02:14
What i am trying to accomplish is to send an xmlhttp.request to a php page which has an array of name. if the request matches any name in the array it will return that name so i can test for equality. It works well with one name. my question is can i send back more than just one name.. like lets say a name and a message and check equality for the name and display the message. basically im asking can the xmlhttp.responsetext be used like an object with different properties so i can pull back different things to set as variables in my javascript. code: <html> <head> <script src="clienthint.js"></script> </head> <body> <form name="form1"> First Name: <input type="text" id="txt1" onkeyup="showHint(this.value)" /> </form> <p>Suggestions: <span id="txtHint"></span></p> </body> </html>
code: var xmlhttp function showHint(str){ if (str.length==0){ document.getElementById("txtHint").innerHTML=""; return; } xmlhttp=GetXmlHttpObject(); if (xmlhttp==null){ alert ("Your browser does not support XMLHTTP!"); return; } var url="gethint.php"; url=url+"?q="+str; url=url+"&sid="+Math.random(); xmlhttp.onreadystatechange=stateChanged; xmlhttp.open("GET",url,true); xmlhttp.send(null); } function stateChanged(){ if (xmlhttp.readyState==4){ document.getElementById("txtHint").innerHTML=xmlhttp.responseText; if (document.getElementById("txt1").value == xmlhttp.responseText){ document.getElementById("txt1").style.backgroundColor = "#FFFF99"; } else { document.getElementById("txt1").style.backgroundColor = "#FFFFFF"; } } } function GetXmlHttpObject(){ if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari return new XMLHttpRequest(); } if (window.ActiveXObject){ // code for IE6, IE5 return new ActiveXObject("Microsoft.XMLHTTP"); } return null; }
code: <?php // Fill up array with names $a[]="Anna"; $a[]="Brittany"; $a[]="Cinderella"; $a[]="Diana"; $a[]="Eva"; $a[]="Fiona"; $a[]="Gunda"; $a[]="Hege"; $a[]="Inga"; $a[]="Johanna"; $a[]="Kitty"; $a[]="Linda"; $a[]="Nina"; $a[]="Ophelia"; $a[]="Petunia"; $a[]="Amanda"; $a[]="Raquel"; $a[]="Cindy"; $a[]="Doris"; $a[]="Eve"; $a[]="Evita"; $a[]="Sunniva"; $a[]="Tove"; $a[]="Unni"; $a[]="Violet"; $a[]="Liza"; $a[]="Elizabeth"; $a[]="Ellen"; $a[]="Wenche"; $a[]="Vicky"; //get the q parameter from URL $q=$_GET["q"]; //lookup all hints from array if length of q>0 if (strlen($q) > 0){ $hint=""; for($i=0; $i<count($a); $i++){ if (strtolower($q)==strtolower($a[$i])){ $hint=$a[$i]; } } } // Set output to "no suggestion" if no hint were found // or to the correct values if ($hint == ""){ $response="no suggestion"; } else{ $response=$hint; } //output the response echo $response; ?>
|
Paranoid (IV) Inmate From: Paris, France |
posted 09-17-2009 13:10
Yes, you could have your php page return an object and evaluate it into a variable, but actually you don't need to use complex objects if you're only hinting at text values. |
Bipolar (III) Inmate From: |
posted 09-17-2009 15:16
Thank you very much for the advice i didn't think of it that way. but im actually not trying to get a hint. I started with a hint but now i want to use it like a username availability checker. So if there is an exact match they will not be able to use it. I just didnt change the code to much cause i was being lazy.. |
Paranoid (IV) Inmate From: Paris, France |
posted 09-17-2009 16:43
Ahh, sorry I misunderstood you. code: $response = "{property1: '1', property2: '2'}"; [...] var myObject = eval(xmlhttp.responseText); alert(myObject.property1);
|
Obsessive-Compulsive (I) Inmate From: |
posted 05-03-2010 13:23
edit tp: spam removed. |