Peter Balsamo
Peter Balsamo

Reputation: 3

how do i fill text box field with ajax

I have a combobox and i want to fill the State and Zip_code Field..its working but it fills each field State "NY11715" and Zip_code "NY11715"...i'm looking to fill State "NY" and Zip_code 11715...please help me resolve this

<select name="LookupCity" id="LookupCity" onchange="showZip(this.value)">
<option value="" <?php if (!(strcmp("", $_GET['City']))) {echo "selected=\"selected\"";} ?>>Select from menu</option>
<?php do { ?>
<option value="<?php echo $row_fmCity['City']?>"<?php if (!(strcmp($row_fmCity['City'], $_GET['City']))) {echo "selected=\"selected\"";} ?>><?php echo $row_fmCity['City']?></option>
<?php
} while ($row_fmCity = mysql_fetch_assoc($fmCity));
$rows = mysql_num_rows($fmCity);
if($rows > 0) {
mysql_data_seek($fmCity, 0);
$row_fmCity = mysql_fetch_assoc($fmCity); } ?> </select>

<a href="ZipLookup.php">select</a></td> 

</tr><tr valign="baseline">
<td nowrap="nowrap" align="right">State:</td>
<td><input type="text" name="State" id="State" placeholder="NY" value="<?php echo $_GET['State']; ?>" size="5"/>
<input type="text" name="Zip_Code" id="Zip_Code"placeholder="zip code" value="<?php echo $_GET['Zip']; ?>" size="10" /></td>





Ajax code


function showZip(str)
{
if (str=="")
  {
  document.getElementById("State").innerHTML="";
  document.getElementById("Zip_Code").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
   document.getElementById("State").value=xmlhttp.responseText;
   document.getElementById("Zip_Code").value=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","Getzip.php?q="+str,true);
xmlhttp.send();
}





PHP Code


<?php
$q=$_GET["q"];

$con = mysql_connect('localhost', 'root', 'root');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("Leadbook", $con);

$sql="SELECT * FROM Zip WHERE City = '".$q."'";

$result = mysql_query($sql);

while($row = mysql_fetch_array($result))
  {

  $State = $row['State'];
  $Zip_Code = $row['Zip Code'];

  }
echo $State;
echo $Zip_Code;

mysql_close($con);
?>

Upvotes: 0

Views: 1238

Answers (1)

Zain Baloch
Zain Baloch

Reputation: 470

1. change your php code, so that both city and zip code are comma seperated.

change this code:

echo $State;
echo $Zip_Code;

to this:

echo $State;
echo ",";
echo $Zip_Code;

2. than update your javascript, so that the return text is splitted into 2 parts and gets to its respected fields.

change this code:

document.getElementById("State").value=xmlhttp.responseText;
document.getElementById("Zip_Code").value=xmlhttp.responseText;

to this:

var string = xmlhttp.responseText;
var array = string.split(',');
document.getElementById("State").value=array[0];
document.getElementById("Zip_Code").value=array[1];

this should do what you requested.

Upvotes: 3

Related Questions