因此,我无法从客户端jsp检索信息。 javascript执行,并且警告打印,但是在java servlet中查询变为null,然后将null写入记录器。我似乎无法弄清楚为什么查询现在为空。
HTML:
<div id="query">
<div id="querybar">
<form onsubmit="query();return false;" method="get">
<input type="text" id="querytext" placeholder="Run a query" name="querytext">
</form>
<div id="queryimg-container">
<img src="styles/magnifyingglass.png" id="queryimg" alt="" />
</div>
</div>
</div>
JS:
function query() {
$.get('QueryHelper', function(data) {
alert("Somesortofalert");
});
}
Java Servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String query = request.getParameter("querytext");
response.setContentType("text/plain");
@SuppressWarnings("resource")
PrintWriter writer = response.getWriter();
sLogger.info(query);
}
任何人都可以看到任何错误吗?我在这里非常难过。
答案 0 :(得分:1)
它将是null
,因为没有使用该Ajax请求发送该名称的参数。
尽管onsubmit
事件是由<form>
事件启动的,但$.get()
并未对data
有任何自动了解。您可以使用$.get('QueryHelper', { querytext: 'foo bar' }, function (res) {
// ...
});
参数收集或指定要包含在请求中的任何参数。
<form>
如果您引用data
或其输入,则可以使用.serialize()
准备字段&#39;名称和值为<form onsubmit="query(this); return false;" method="get">
<!-- ^^^^ -->
。
function query(form) {
// ^^^^
$.get('QueryHelper', $(form).serialize(), function (res) {
// ^^^^^^^^^^^^^^^^^^^
// ...
});
}
{{1}}