Ajax は http プロトコルを使用してサーバーと通信します。したがって、Ajax 要求を処理するサーブレットまたは JSP を作成するだけです。入力はクエリ引数を使用して渡され、サーブレット/jsp はその出力をテキストとして返します。
出力は、任意の形式にすることができます。一般的な形式は、プレーン テキスト、xml、または json です。個人的には、eval 関数で解析できる JavaScript オブジェクト リテラルを返すことを好みます。これにより、文字列、数値、ブール値、配列、およびオブジェクトを含む非常に複雑なデータを返すことができます。しかし、出力を解析するコードは単純な eval 呼び出しです。
以下はサンプルコードです。ajax は、入力として 2 つの数値を取り、それらの合計、差、積、および商を返す jsp を呼び出します。jspコードは次のとおりです。
<%@page contentType="text/plain"%>
<%
// get the input values
double val1 = 0;
double val2 = 0;
String errorMsg = "";
try {
val1 = Double.parseDouble(request.getParameter("val1"));
val2 = Double.parseDouble(request.getParameter("val2"));
} catch (Exception e) {
errorMsg = "Non-numeric input";
}
// return the javascript object literal
String result = "({";
result += " val1 : " + val1 + ",";
result += " val2 : " + val2 + ",";
result += " sum : " + (val1 + val2) + ",";
result += " difference : " + (val1 - val2) + ",";
result += " product : " + (val1 * val2) + ",";
result += " quotient : " + (val1 / val2) + ",";
result += " errorMsg : \"" + errorMsg + "\"";
result += "})";
out.println(result);
%>
上記の jsp への ajax 呼び出しを行い、出力を処理する JavaScript 関数を次に示します。
function calculate(value1, value2) {
var dataObj = {val1 : value1, val2 : value2};
$.ajax({
url : 'calculator.jsp',
dataType : 'text',
data : dataObj,
cache : false, // guarantees jsp is always called
success: function(data) {
var result = eval(data);
var msg;
if (result.errorMsg != '') {
msg = result.errorMsg;
} else {
msg = result.val1 + " + " + result.val2 + " = " + result.sum + '\n';
msg += result.val1 + " - " + result.val2 + " = " + result.difference + '\n';
msg += result.val1 + " * " + result.val2 + " = " + result.product + '\n';
msg += result.val1 + " / " + result.val2 + " = " + result.quotient;
}
alert(msg);
}
});
}