2011-03-23 59 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文件,而不是隻創建