您好我一直在尝试将值从ajax传递给servlet,使用了JQUERY jquery-1.3.2& query-1.3.2.min。我能成功发送数据但是如果我打印servlet中的值为null
这是我的js事件
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/myjquery.js"></script>
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" >
function AddNext(event)
{
MQA.EventManager.addListener(map, 'click', AddNext);
var lata = event.ll.getLatitude();
var lnga = event.ll.getLongitude();
var latlon=lata+"|"+lnga;
addpasslatlon(latlon);
MQA.EventManager.clearAllListeners( map);
exit();
};
myjquery.js -
function addpasslatlon(latlon)
{
var value=latlon;
$.ajax({
url:'insertPos',
type:'POST',
data:value,
success : function(data){
alert('success'+data);
}
});
}
我的servlet类 -
public class InsertPos extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String a =request.getParameter("value");
System.out.println(a);
}
}
的web.xml -
<url-pattern>/insertPos</url-pattern>
O / P- null
答案 0 :(得分:2)
您必须在数据中发送对象:
data:{value : value},
//----^^^^^-------------this is the key which you refered in your servlet.
在您的后端,您应该使用当前正在执行的密钥value
来获取它。
答案 1 :(得分:0)
你应该运行一个简单的测试,让你看看你有哪些参数,你可以使用getParameterMap()返回一个Map对象:
System.out.println(request.getParameterMap());
这将使用地图的键值对打印出所有可用参数,所以接下来当您知道地图中的所有键以及它们映射到的值时,您可以调用它,就像您已经尝试过的那样,时间你将确信该值已作为参数的一部分存在:
request.getParameter("<insertKeyHere>");
Jai所做的是他向您展示了如何将JSON对象传递给servlet
数据:{value:value},
这对servlet非常有用,因为它可以轻松地将其解析为参数映射。
这个问题是你不想声明一个完整的JSON字符串你自己...它对一个或两个值很好,但绝对不适用于更大的对象。
你可能想要使用的是将所有对象转换为JSON的javascript函数,你可以将它添加到你的ajax调用中,它会起作用:
data: JSON.stringify(value),