2012-04-27 3 views
1

내 웹 페이지에 두 개의 드롭 다운 목록이 있으며 한 쪽이 다른쪽에 종속되어 있습니다. 내가 사용중인 Ajax 코드는 Chrome, Mozilla에서는 잘 작동하지만 IE에서는 그렇지 않습니다 (IE9를 사용 중입니다). 이 문제를 해결하는데 도움을 주실 수 있습니까?Internet Explorer의 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"에서 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); 
    } 
    %> 

이상한 일이 "하위"다운 목록 제 강하를 덮는 DIV ID가 인 그것은 IE와 다른 브라우저에서 잘 작동합니다. 내가 위의 접근 방식을 따르는 경우에

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

나는 다음 JS 코드를 사용하여 해당 하위 카테고리 선택 상자에 대한 자바 스크립트 양식 유효성 검사를 할 수 없습니다입니다.

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

변경하기 (아약스 코드에 의해 호출 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 코드로 호출 됨

웹 페이지 (메인 페이지)에
response.setContentType("text/html"); 

(210), HTML은

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

과 아약스 (메인 페이지) 코드

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

당신 말은, 난 내 주요 jsp-

다음
를 잖아요,하기에이 코드를 변경해야합니다입니다 선택 목록은 어떻게됩니까? 페이지에 어떻게 표시 되나요? –

+0

그리고이 줄을 정확히 어디에 추가해야하는지 알려주시겠습니까? --- response.setContentType ("text/html"); –

+0

빠른 응답을 보내 주셔서 감사합니다. 하지만 지금 내 직장에있어 내 프로젝트에 대한 액세스 권한이 없습니다. 귀하의 답변을 구현하고 반드시 알려 드리겠습니다. 감사합니다. –

관련 문제