2011-03-23 58 views
0

我的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>'; 
} 
?> 

验证表单中还有其他函数,但我忽略了它们,因为它们看起来不相关。

+0

尝试加入不同的变量名在其内部被命名一样“XMLHTTP”两个JavaScript函数。也请告诉ajax通话是否已启动,还会发生什么? – Vijay 2011-03-23 06:13:44

+0

这段代码完全在FFňChrome中运行,但是,它只是创造IE.n我试图改变变量的名称问题,但它仍然不工作!如果您在该响应条件中发出警报,则您会收到响应值但未显示在下拉列表中的ajax调用启动信息! – 2011-03-23 06:26:59

回答

1

在IE浏览器中选择元素的innerHTML选项不会工作 ..

所以它能够更好地从你的PHP文件创建选项全部选择元素并返回它们。

然后有一个div用于放置选择框,并使用正常innerHTML属性添加的内容。

否则

您必须添加使用JavaScript选项,并为不同的IE和其他.. 下面的示例动态添加一个元素到选择框..

function displayResult() 
{ 
var x=document.getElementById("mySelect"); 
var option=document.createElement("option"); 
option.text="Kiwi"; 
try 
    { 
    // for IE earlier than version 8 
    x.add(option,x.options[null]); 
    } 
catch (e) 
    { 
    x.add(option,null); 
    } 
} 

我觉得你可以使用第一个选项,这将是容易..

+0

嘿! kvijayhari,我想我已经得到了问题n表示的,我提醒xmlhttp.responseText响应条件N你猜怎么着!它显示在FFñ铬的警告框城市的价值,但在IE中它只是表明是的第一选择,但在FF它显示像ň等所有值! !但问题是我只在IE浏览器收到的回复! – 2011-03-23 06:57:34

+0

如果我正在创建一个div创建整个选择元素,但它仍然在FF n Chrome中正常工作,但不能再次在IE中工作!它只显示“选择城市”就像一个标签代替下拉! – 2011-03-23 07:04:45

+0

在你的PHP文件,而不是只创建