我无法从请求中检索值。
的Servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String location_id = request.getReader().readLine(); // <---- null
location_id = request.getParameter("location_id"); // <--- null
PrintWriter out = response.getWriter();
out.write(this.get_events_json(location_id));
}
在客户端:
$.get("EventServe", {location_id : location_id}).done(function() {
var events = JSON.parse(responseText);
outer_this.events = events.map(function(event){
var event = new Event(event.address, event.name, event.event_start, event.event_end)
return event;
});
outer_this.events.map(function(event){outer_this.insert_event(event)});
});
我还试图直接传递它而不使用jQuery,只使用文字。
答案 0 :(得分:1)
当您使用$.get('EventServe', {location_id: location_id}, ...)
发出HTTP GET
请求时,您将location_id
的值作为查询字符串参数传递给指定的URL。基本上您要求:EventServe?location_id=4
,其中4是location_id
的值。
在服务器端,您可以通过getParameter(String name)
访问查询字符串参数:
public void doGet(...) {
String locationId = request.getParameter("location_id");
}
一些额外的说明:
request.getReader().readLine()
的通话。 (另外,readLine(byte[] b, int off, int len)
不需要参数吗?)BufferedReader
,InputStream
或类似内容手动读取请求是一种不好的(松散使用的)习惯,因为这样做可能会干扰在某些情况下使用getParameter(String name)
:如果参数数据是在请求正文中发送的,例如HTTP POST请求,则直接通过
getInputStream()
或getReader()
读取正文会干扰此方法的执行。< / p>
您的客户端代码有一个错误,您可以在其中定义在Ajax调用完成时运行的函数。该函数应该以{{1}}为参数,因为jQuery将自动解析JSON响应:
events
(戴上迂腐帽。)您的方法名称.done(function (events) {
// Do things with the events
});
不符合Java惯例。考虑将其重命名为get_events_json
或其他类似的内容。
答案 1 :(得分:-1)
只需查看getAttribute(String name)
或getParameter(String name)
即可。
编辑:getParameter(String)
用于POST请求,但您执行GET请求。请改用getAttribute(String)