Я нахожу проблему с отправкой получающего параметра - PullRequest
1 голос
/ 22 марта 2010

Как получить перевод XML в выпадающий список HTML с помощью ajax? Я отправляю параметр методом GET, но файл JSP, который генерирует XML, не получает его.

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-файла. Я получил эту ошибку:

Сервер не понял запрос или запрос был недействительным. Erreur de traitement de la ressource http://www.w3.o...

1 Ответ

1 голос
/ 22 марта 2010

Чтобы быть уверенным: это весь файл JSP? Сообщение об ошибке предполагает, что у вас есть <!DOCTYPE> сверху, что указывает на DTD на w3.org, но рассматриваемый веб-браузер не может его загрузить. Сообщение об ошибке также предполагает, что вы используете IE для проверки всего этого, этот веб-браузер, как известно, имеет странные ограничения и причуды в отношении открытия файлов XML из http://localhost. Вместо этого попробуйте более приличный веб-браузер, например Firefox .

Далее я обнаружил несколько недостатков в этом подходе:

  1. </body></html> на самом деле не относится к нижней части JSP. Удалить их.
  2. JSP - неподходящий инструмент для этой работы. Используйте сервлет.
  3. Часть if (it.hasNext()) является излишней, поскольку она уже обрабатывается оператором for.
  4. XML должен иметь один корневой элемент. Прямо сейчас вы пишете в него несколько <wa> элементов.
  5. SQL подвержен атакам внедрения SQL. Используйте именованные запросы.

На самом деле это не проблема, но скорее предложение, я рекомендую взглянуть на jQuery , чтобы запускать аяксические запросы и выполнять манипуляции с DOM красивым, лаконичным и совместимым с кроссоверами способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...