siric Posted January 19, 2011 Share Posted January 19, 2011 HI, I am running the following script which allows me to have a filter on a second dropdown box depending on what was chosen in the first one. function getState(countryId) { var strURL="findState.php?country="+countryId; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('statediv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } <form method="post" action="" name="form1"> <table width="60%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="150">Country</td> <td width="150"><select name="country" onChange="getState(this.value)"> <option value="">Select Country</option> <option value="1">USA</option> <option value="2">Canada</option> </select></td> </tr> <tr style=""> <td>State</td> <td ><div id="statediv"><select name="state" > <option>Select Country First</option> </select></div></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> </table> and it works. If I however add another set of dropdown boxes with the same criteria, the second one does not work and I have to change the name of the function in the onChange statement and add that new function to the script at the top to get it to work. function getState(countryId) { var strURL="findState.php?country="+countryId; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('statediv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } function getState1(countryId) { var strURL="findState.php?country="+countryId; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('statediv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } <form method="post" action="" name="form1"> <table width="60%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="150">Country</td> <td width="150"><select name="country" onChange="getState(this.value)"> <option value="">Select Country</option> <option value="1">USA</option> <option value="2">Canada</option> </select></td> </tr> <tr style=""> <td>State</td> <td ><div id="statediv"><select name="state" > <option>Select Country First</option> </select></div></td> </tr> <tr style=""> <td>City</td> <td ><div id="citydiv"><select name="city"> <option>Select State First</option> </select></div></td> </tr> </table> <table width="60%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="150">Country</td> <td width="150"><select name="country" onChange="getState1(this.value)"> <option value="">Select Country</option> <option value="1">USA</option> <option value="2">Canada</option> </select></td> </tr> <tr style=""> <td>State</td> <td ><div id="statediv"><select name="state" > <option>Select Country First</option> </select></div></td> </tr> </table> </form> Isn't there a way that I can reuse the function with the same name as many times as I want without having to use a new name each time?? Quote Link to comment https://forums.phpfreaks.com/topic/224957-reuse-of-ajax-function/ Share on other sites More sharing options...
Firemankurt Posted January 27, 2011 Share Posted January 27, 2011 You can not have two divs with the same ID "statediv" Change div ids and pass them with your onChange event. Quote Link to comment https://forums.phpfreaks.com/topic/224957-reuse-of-ajax-function/#findComment-1166294 Share on other sites More sharing options...
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.