2010-03-22 4 views
1

ajax를 사용하여 XML로 HTML 변환 드롭 다운 목록을 가져 오는 방법은 무엇입니까? GET 메소드를 사용하여 매개 변수를 전송하지만 XML을 생성하는 JSP 파일은이를 수신하지 못합니다.수신 매개 변수를 보내는 데 문제가 있음

var url = "responsexml.jsp"; 
url = url + "?projectCode=" + prj.options[prj.selectedIndex].value; 
xmlhttp.onreadystatechange=stateChanged; 
xmlhttp.open("GET", url, true); 
xmlhttp.send(null); 

는 그리고 responsexml.jsp 내가 그렇게 할 :

<% 
    String projectcode = (String) request.getParameter("projectCode"); 
    System.out.println("++++projectCode:=" + projectcode); 
    Session s = null; 
    Transaction tx;  

    try { 
     s = HibernateUtil.currentSession(); 
     tx = s.beginTransaction(); 
     Query query = s.createQuery("SELECT from Wa wa where wa.ProjectCode='" + projectcode + "'"); 
     response.setContentType("text/xml"); 
     PrintWriter output = response.getWriter(); 
     output.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); 
     //response.setHeader("Cache-Control", "no-cache"); 

     if (projectcode != null) { 
      for (Iterator it = query.iterate(); it.hasNext();) { 
       if (it.hasNext()) { 
        Wa object = (Wa) it.next(); 
        //out.print("<item id=\"" + object.getIdWA() + "\" name=\"" + object.getWAName() + "\" />"); 
        output.write("<wa>"); 
        output.write("<item id=\"" + object.getIdWA() + "\" name=\"" + object.getWAName() + "\" />"); 
        output.write("</wa>"); 
       } 
      } 
     } 
    } catch (HibernateException e) { 
     e.printStackTrace(); 
    } 
%> 
</body> 
</html> 

내 XML 파일이없는이 코드와 함께.

The server did not understand the request, or the request was invalid. Erreur de traitement de la ressource http://www.w3.o ...

답변

1

가 확인하려면 :이 오류가있어 그 전체 JSP 파일은? 오류 메시지는 즉, 위의 <!DOCTYPE>이 w3.org의 DTD를 가리키고 있지만 해당 웹 브라우저가로드 할 수 없음을 나타냅니다. 오류 메시지는 또한이 모든 것을 테스트하기 위해 IE를 사용하고 있음을 암시합니다.이 웹 브라우저는 http://localhost에서 XML 파일을 여는 것과 관련하여 이상한 제한과 단점이있는 것으로 알려져 있습니다. 대신 예를 들어 Firefox과 같이 적절한 웹 브라우저를 사용해보십시오.

은 또한에 나는이 방법에 여러 가지 결함을 발견 :

  1. </body></html> 정말 JSP의 하단에 거기에 속하지 않습니다. 그들을 제거하십시오.
  2. JSP가이 작업을위한 잘못된 도구입니다. 서블릿을 사용하십시오.
  3. if (it.hasNext()) 조각은 이미 for 문에 의해 처리되므로 불필요합니다.
  4. XML에는 하나의 루트 요소가 있어야합니다. 지금은 여러 개의 <wa> 요소를 작성하고 있습니다.
  5. SQL은 SQL 주입 공격을 받기 쉽습니다. 명명 된 쿼리를 사용하십시오.

문제,하지만 더 제안하지 정말, 내가 ajaxical 요청을 발사 jQuery 좀보고 추천하고, 좋은 간결하고 crossbrowsercompatible 방법으로 DOM 조작을한다.

관련 문제