Итак, у меня есть то назначение на основе ajax, которое отправляет объект через JavaScript в сервлет Java. У меня вопрос - как мне сделать это с несколькими объектами?
Цель состоит в том, чтобы отправить данные из JS (проверить данные) в Java (вычислить результат), а затем снова в JS (печать из устройства вставки).
function validate() {
var num1 = document.getElementById("firstIn");
var data = "firstIn="+ encodeURIComponent(num1.value);
// var num2 = document.getElementById("secondIn"); //want to send this one as well
if (typeof XMLHttpRequest != "undefined") {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "Main";
req.open("POST", url, true);
req.onreadystatechange = inserter();
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(data); //Want to send multiple objects
}
==============================================================================
function inserter(){
if (req.readyState == 4) {
if (req.status == 200) {
var msg = req.responseText;
document.getElementById("msg").innerHTML = "<div>"+msg+"</div>";
}}}
@WebServlet("/add")
public class Main extends HttpServlet {
public static boolean isNumeric(String str) {
return str.matches("-?\\d+(\\.\\d+)?");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
resp.setHeader("Cache-Control", "no-cache");
if (isNumeric(req.getParameter("firstIn")) && isNumeric(req.getParameter("secondIn"))) {
int one = Integer.valueOf(req.getParameter("firstIn"));
int two = Integer.valueOf(req.getParameter("secondIn"));
int sum = one + two;
String result = Integer.toString(sum);
resp.getWriter().write("result is " + sum);
} else {
resp.getWriter().write("Wrong values");
}
}
}
Пробовал что-то вроде:
//Splitting into two datas:
var data1 = "firstIn="+ encodeURIComponent(num1.value);
var data2 = "secondIn="+ encodeURIComponent(num2.value);
send({data1, data2};
//Putting objects in one data:
var data = "firstIn="+ encodeURIComponent(num1.value) + ", " +"secondIn="+
encodeURIComponent(num2.value);
send(data);