2012-04-27 12 views
1

私のWebページに2つのドロップダウンリストがあり、1つは他のページに依存しています。私が使用しているAjaxコードは、Chrome、Mozillaではうまく動作していますが、IEでは使用できません(IE9を使用しています)。誰かがこの問題を解決するのを助けてくれますか?Internet ExplorerのAjaxに依存するドロップダウンリストの問題

これはAjaxがドロップダウンリストがある.--

<table> 
    <tr> 
<td align="right" width="10%">Category </td> 
<td> 
    <select id='category' name="adv.categoryNo" onchange="showSubCategory(this.value)"> 
     <option >Select the Category</option> 
    <% 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
Connection con1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/db","user","pwd"); 
Statement stmt1 = con1.createStatement(); 
ResultSet rs1 = stmt1.executeQuery("Select * from categories"); 
while(rs1.next()){ 
    %> 
    <option value="<%=rs1.getString(2)%>"><%=rs1.getString(2)%></option> 
    <% 
} 
    %> 
    </select>         
    </td> 
    </tr> 

    Second drop down list 


    <tr> 
     <td align="right" width="10%">Subcategory <span class="mandatory">*</span>: </td> 
     <td> 
     <div id='subcategory'> 
     <select id='subcat' name='subcategory'> 
     <option >Select the Subcategory</option> 
     </select> 
     </div> 
    </td> 
    </tr> 

ここではメインのJSPページは、サブカテゴリ JSPファイルである。この

<script language="javascript" type="text/javascript"> 
    var xmlHttp 
    var xmlHttp 

    function showSubCategory(str){ 
     if (typeof XMLHttpRequest != "undefined"){ 
     xmlHttp= new XMLHttpRequest(); 
     } 
     else if (window.ActiveXObject){ 
     xmlHttp= new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     if (xmlHttp==null){ 
     alert("Browser does not support XMLHTTP Request") 
     return; 
     } 
     var url="jsp/subcategory.jsp"; 
     url +="?count=" +str; 
     xmlHttp.onreadystatechange = stateChange1; 
     xmlHttp.open("GET", url, true); 
     xmlHttp.send(null); 
     } 

     function stateChange1(){ 
     if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ 
     document.getElementById("subcat").innerHTML=xmlHttp.responseText 
     } 
     } 

をコード - ですこれはAjaxによって呼び出されます。私は「SUBCAT」から2つ目のドロップダウン・リストをカバーするdivのidである「サブカテゴリ」にAjaxコードの次の関数にgetElementByIdをのparamを変更した場合

<%@page import="java.sql.*"%> 
<% 
    String category=request.getParameter("count"); 
    String buffer="<select name='adv.subCategoryNo'><option >Select the Subcategory</option>"; 
try{ 
    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db","user","pwd"); 
    Statement stmt = con.createStatement(); 
    ResultSet rs = stmt.executeQuery("Select * from subcategories where  categoryName='"+category+"' "); 
    while(rs.next()){ 
    buffer=buffer+"<option value='"+rs.getString(3)+"'>"+rs.getString(3)+"</option>"; 
    } 
    buffer=buffer+"</select>"; 
    response.getWriter().println(buffer); 
    } 
    catch(Exception e){ 
    System.out.println(e); 
    } 
    %> 

奇妙なことが、ありますそれはIEと他のブラウザで正常に動作します。

function stateChange1(){ 
     if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ 
     document.getElementById("subcat").innerHTML=xmlHttp.responseText 
     } 

私は上記の方法に従った場合、私は、次のJSコードを使用して、そのサブカテゴリ選択ボックスのために任意のJavaScriptのフォーム検証を行うことができないのです。

function madeSelectionCity(){ 
    var subcat = document.getElementById('subcat'); 
if(subcat.value == "Select the City name"){ 
    alert("Please select a subcategory first"); 
    subcat.focus(); 
    return false; 
}else{ 
    return true; 
} 
} 

私の質問ではっきりしています。これ以上の説明が必要な場合はお知らせください。おかげ

+0

する必要がありますする必要がありますが、あなたが** responseTextを投稿することができます**の** XMLHttpRequest **オブジェクトです。 –

+0

私の答えが働くかどうか私に教えてください。 –

+0

私は自分の答えを編集しました。それを見てください。あなたの最初のコメントへの答えははい、htmlコードを変更する、それは動作するはずです。 –

答えて

0

変更するには、以下の(AJAXコードによって呼び出さsubcategory.jsp中)コードの行

String buffer="<select name='adv.subCategoryNo'><option >Select the Subcategory</option>"; 

String buffer="<select id='subcat' name='adv.subCategoryNo'><option >Select the Subcategory</option>"; 

にもコード行を追加します(を中subcategory.jspajax code)

Webページ(メインページ)の210
response.setContentType("text/html"); 

、HTMLは

<div id='subcategory'> 
</div> 

とAjax(メインページ)のコードが

function stateChange1(){ 
     if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ 
     document.getElementById("subcategory").innerHTML=xmlHttp.responseText 
     } 
+0

はもしかして、私は私のメインjsp-

その後
をジャストにする上で、このコードを変更する必要がありますです選択リストはどうなりますか?ページにどのように表示されますか? –

+0

そして、この行をどこに追加すればよいか教えてください。--- response.setContentType( "text/html"); –

+0

あなたの迅速な対応に感謝します。しかし、私は今私の仕事場にいるので、私のプロジェクトへのアクセスはありません。私はあなたの答えを実装し、確実にあなたに知らせるでしょう。どうもありがとう。 –

関連する問題