2015-01-26 152 views
0

所以,我无法从我的客户端jsp中检索信息。 JavaScript执行,警报打印,但是在java servlet中查询变为null,然后将null写入记录器。我似乎无法弄清楚为什么查询现在为空。getParameters始终返回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

请描述你采取什么样的用户行为,然后你观察客户端和服务器发生什么。 “检索信息出现问题”并不完全描述你观察到的内容。 – jfriend00 2015-01-26 21:45:47

+0

“我有麻烦”不是一个好的描述。请解释你所经历的行为是什么,以及你期望的行为是什么。 – RealSkeptic 2015-01-26 21:46:09

+0

从ajax调用中获得什么?尝试添加'.fail(function(){})'到你的'$ .get'调用来查看哪些是错误的... – albciff 2015-01-26 21:46:10

回答

1

这将是null,因为该名称的参数没有通过Ajax请求发送。

尽管由onsubmit事件启动,但$.get()不具备<form>的任何自动知识。您可以使用data参数收集或指定要包含在请求中的任何参数。

$.get('QueryHelper', { querytext: 'foo bar' }, function (res) { 
    // ... 
}); 

提供您必须将<form>或它的输入的基准,则可以使用.serialize()制备字段的名称和值作为data

<form onsubmit="query(this); return false;" method="get"> 
<!--     ^^^^       --> 
function query(form) { 
    //   ^^^^ 

    $.get('QueryHelper', $(form).serialize(), function (res) { 
     //    ^^^^^^^^^^^^^^^^^^^ 

     // ... 
    }); 
} 
+0

太棒了!使用$('#querytext')。val()替换'foo bar',这正是我想要它做的! 第二个选择是否有任何固有的优点离子?或者他们只是两种做法? 此外,这不是一个比获得更多的职位,因为我发布的东西到servlet?因此,我不应该改变一切发布? – Jake 2015-01-26 22:00:07

+1

@Jake在这种情况下,直接检索单个文本字段可能更简单。 '.serialize()'特别适用于使用多种输入类型的较大表单。 – 2015-01-26 22:19:38

+0

我认为这很可能是差异。由于序列化解决方案似乎工作,我想我会留下它。再次感谢! – Jake 2015-01-26 22:31:26