Обработка сервлета производится в Ajax

Моя проблема: Я отправляю запрос к сервлету от функции Ajax в JSP.

Сервлет обрабатывает данные и возвращает a ArrayList.

Мой вопрос состоит в том, как обработать ArrayList в Ajax и дисплее это как таблица в том же JSP.

Код

function ajaxFunction ( ) {

 // var url= codeid.options[codeid.selectedIndex].text;
 url="mstParts?caseNo=9&cdid=QCYST0020E1";
 //  alert(cid);
   var httpRequest;
    if (window.XMLHttpRequest) {
        httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
  if (httpRequest == null){ alert('null');}

alert(url);
    httpRequest.open("GET", url, true );

   httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
  //httpRequest.setRequestHeader('Content-Type', 'text/plain');
    httpRequest.send(null);

  alert('t1');
}

function alertContents(httpRequest) {
    if (httpRequest.readyState == 4) {
        var cType =httpRequest.getResponseHeader("Content-Type");
        //document.write(httpRequest.toString());
      // alert(cType);
       // var xmlDoc=httpRequest.responseText;
        //document.write(xmlDoc.toString());
      //  if (xmlDoc == null) {alert('null returned');}
        if (!httpRequest.status == 200) {
            alert('Request error. Http code: ' + httpRequest.status);
        }
        else
            {
                var profileXML = eval(<%=request.getAttribute("data")%>);
                if ( profileXML != null){ alert('null'); }//else { alert(profileXML(0)); }
               // httpRequest.getAttribute("data");


            }
    }
}
7
задан Beryllium 6 September 2013 в 17:38
поделиться

1 ответ

 var profileXML = eval (<% = request.getAttribute ("data")%>);

Во-первых, я бы порекомендовал вам узнать о стене между JavaScript и JSP. JS полностью выполняется на стороне клиента , а JSP / Java полностью выполняется на стороне сервера . Они определенно не работают синхронно, как вы думаете. Чтобы узнать больше, прочтите эту статью блога .

 function ajaxFunction ()

Во-вторых, я бы порекомендовал вам использовать существующую, надежную, тщательно разработанную, хорошо поддерживаемую библиотеку JavaScript с возможностями Ajaxical, такую ​​как jQuery , вместо того, чтобы изобретать колесо AJAX и бороться / бороться / беспокоиться о проблемы / проблемы / поведение / проблемы, характерные для браузера. Я также рекомендовал бы использовать JSON в качестве формата передачи данных между Java Servlet на сервере и JavaScript на клиенте. На стороне Java вы можете использовать для этого отличную библиотеку Gson .

Вот начальный пример со всеми упомянутыми методами. Начнем с сервлета и JavaBean:

public class JsonServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Data> list = dataDAO.list();
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(new Gson().toJson(list));
    }
}

public class Data {
    private Long id;
    private String name;
    private Integer value;
    // Add/generate getters/setters.
}

JsonServlet (вы можете называть его как хотите, это всего лишь базовый пример) должен быть отображен в web.xml на известный url-шаблон , пусть ' s используйте / json в этом примере. Класс Data просто представляет одну строку вашей HTML-таблицы (и таблицы базы данных).

Теперь вот как вы можете загрузить таблицу с помощью jQuery.getJSON :

$.getJSON("http://example.com/json", function(list) {
    var table = $('#tableid');
    $.each(list, function(index, data) {
        $('<tr>').appendTo(table)
            .append($('<td>').text(data.id))
            .append($('<td>').text(data.name))
            .append($('<td>').text(data.value));
    });
});

tableid , конечно же, обозначает id рассматриваемого элемента

.

Так и должно быть. В конце концов, поверьте, это довольно просто. Удачи.

поверь мне. Удачи.

поверь мне. Удачи.

19
ответ дан 6 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: