我的Ajax代码工作正常在其他浏览器,但在IE它都不尽如人意。阿贾克斯不是在IE8工作的下拉菜单,但它在其他浏览器工作正常
它创建的XMLHTTPRequest但是从我的PHP脚本的值只能是一个空列表!
这里是我的javascript:
<script type="text/javascript">
function getcity()
{
$('#stateerr').hide();
state=document.getElementById("ddlstate").value;
// alert(state);
var xmlhttp;
if (window.XMLHttpRequest)
{
alert('in this');
xmlhttp=new XMLHttpRequest();
alert(xmlhttp);
}
else
{
alert('in that');
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("ddlcity").innerHTML=xmlhttp.responseText;
alert(xmlhttp.responseText);
}
}
var str="getcity.php?q="+state;
// alert(str);
xmlhttp.open("GET",str,true);
xmlhttp.send();
}
function getlocation()
{
$('#cityerr').hide();
city=document.getElementById("ddlcity").value;
//alert(state);
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("ddllocality").innerHTML=xmlhttp.responseText;
// alert('inhttpresponse');
}
}
var str="getlocation.php?q="+city;
// alert(str);
xmlhttp.open("GET",str,true);
xmlhttp.send();
}
</script>
这里是我的HTML表单:
<form name="search" action="search.php" method="GET" onsubmit="return searchCheck()">
<table width=100% >
<tr>
<td colspan=3>
<div class="backgroundgif" id="backgroundgif" style="height:30px;width:100%">
<span style="font-size:15px; color:#CCFFFF;">
Search Property
</span>
</div>
</td>
</tr>
<tr>
<td>Property For
</td>
<td>
Rent <input type="checkbox" name="rentchkbox" id="rentchkbox" value="1" onclick="getRentPriceRange()"/>
Sell<input type="checkbox" name="sellchkbox" id="sellchkbox" value="1" onclick="getSellPriceRange()"/>
</td>
</tr>
<tr>
<td>
Purpose
</td>
<td>
<select name="purpose">
<option>Family</option>
<option>Student</option>
<option>s</option>
</select>
</td>
</tr>
<tr>
<td>Price range
</td>
<td>
<select name="ddlamount1" id="ddlamount1" onchange="hideerr()">
<option>select checkbox</option>
</select>
</td>
<td><div id="ddlamount1err" style="display:none"><img src="IMAGES/errorsmall.png"/></div></td>
</tr>
<tr>
<td>
State
</td>
<td>
<select name="ddlstate" id="ddlstate" onchange="getcity()">
<option>select state</option>
<option>MAHARASTRA</option>
</select>
</td>
<td><div id="stateerr" style="display:none"><img src="IMAGES/errorsmall.png"/></div></td>
</tr>
<tr>
<td>
City
</td>
<td>
<select name="ddlcity" id="ddlcity" onchange="getlocation()">
<option>select city</option>
<option>PUNE</option>
</select>
</td>
<td><div id="cityerr" style="display:none"><img src="IMAGES/errorsmall.png"/></div></td>
</tr>
<tr>
<td>
Locality
</td>
<td>
<select name="ddllocality" id="ddllocality">
<option>Select Locality</option>
<option>indra nagar</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Search">
</td>
</tr>
</table>
</form>
这是我的PHP脚本。该代码从州下拉列表中获取城市。
<?php
require_once('connection_class2.php');
$connection=new Dbconnection;
$query="select country_id from country where country_name='$_GET[q]'";
$result=$connection->select($query);
while($row=mysqli_fetch_object($result))
{
$country_id=$row->country_id;
}
$query1="select state_name from state where country_id='$country_id'";
$result1=$connection->select($query1);
echo '<option>';
echo 'select state';
echo '</option>';
while($rw=mysqli_fetch_object($result1))
{
$state_name=$rw->state_name;
echo '<option>';
echo $state_name;
echo '</option>';
}
?>
验证表单中还有其他函数,但我忽略了它们,因为它们看起来不相关。
尝试加入不同的变量名在其内部被命名一样“XMLHTTP”两个JavaScript函数。也请告诉ajax通话是否已启动,还会发生什么? – Vijay 2011-03-23 06:13:44
这段代码完全在FFňChrome中运行,但是,它只是创造IE.n我试图改变变量的名称问题,但它仍然不工作!如果您在该响应条件中发出警报,则您会收到响应值但未显示在下拉列表中的ajax调用启动信息! – 2011-03-23 06:26:59