ПОЛУЧИТЬ form.jsp с ajax и param внутри - PullRequest
0 голосов
/ 05 октября 2018

Можно ли напечатать параметр (с jstl), заданный сервлетом, в форме .jsp, доставленной ajax в index.jsp?

Например,

index.jsp

<div class='show'>
    <div class='show-content'></div>
</div>
${name}

form.jsp

<form action='servlet'>
    ${name}
    //inputs and a button
</form>

servlet.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        String s = "Jean";
        request.setAttribute("name", s);
        this.getServletContext().getRequestDispatcher("index.jsp").forward(request, response);
    }

script.js

function openContentFrom(tag, path){
var xhr = new XMLHttpRequest();
xhr.open("POST", path, true);
xhr.onreadystatechange = function(){
    if (xhr.readyState === 4){
        if (xhr.status === 200){
            var txt = xhr.responseText;
            var trueTxt = txt.substr(txt.indexOf("<" + tag + ">") + 6, txt.indexOf("</" + tag + ">"));
            document.getElementsByClassName("show-content")["0"].innerHTML = trueTxt;
        }
        else{
            console.log("Error : " + xhr.status);
        }
    }
};
xhr.send(this);
}

openContentFrom("body", "form.jsp");

Итак, скрипт.js будет приводить содержимое form.jsp внутри show-content в index.jsp при вызове с помощью ajax, и если сервлет уже был выполнен, он будет печатать Jean как в form.jsp, так и в index.jsp.

На данный момент, с get и post это невозможно (ну, конечно, он просто печатает Джина на index.jsp), и мне интересно, если это так, потому что я искал и еще не нашел.

Содержание запросав сервлете отправляется обратно в index.jsp я думаю, так что я могу отправить его обратно в form.jsp?

Спасибо!

1 Ответ

0 голосов
/ 05 октября 2018

вам не нужно возвращать форму

в вашем сервлете, удалите эти 2 строки

request.setAttribute("name", s);
this.getServletContext().getRequestDispatcher("index.jsp").forward(request, response);

и добавьте

response.getWriter().write(s);

в свой ajax

xhr.onreadystatechange = function(s){
    alert(s);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...