奇怪的问题我似乎无法解决。
我在Eclipse Java EE中工作,我有一个名为Process的servlet(映射到/ process)
有一个过程链接
<a href="process?intent=order">Checkout</a>
在进程中是一个doGet方法,验证是否有用户登录,重定向到结帐页面。 (这个工作)结帐页面包含项目,每个项目都有一个单独的输入,我有一个单独的doPost方法,它更新数据库..获取输入更新如下
<input id='ID created in servlet' value='decided in servlet'>
接着是
<button id="update">Button</button>
我有以下JS
var json = [];
$('#update').click(function(){
$('.items').find('input').each(function(){
var tmp = "{id:" + $(this).attr('id') + ",quantity:" + $(this).val() + "}";
json.push(tmp);
});
$.ajax( {
url : 'process',
type : 'POST',
data : json,
dataType : 'json',
success: function(data) {
alert("success");
}
});
});
所以,我猜两个问题。
首先,这是在不同的项目中向不同的servlet发送请求。但是,当使用doGet访问时,它可以工作。 (我有一个doPost的不同代码)是否有任何理由不能识别我的Process.java文件中的doPost方法?什么可能导致它搜索另一个servlet?
其次,我知道在获取servlet中的数据后该怎么做,但我不知道如何实际访问数据。它通过'data:'中的jquery传递,然后我将如何在servlet中访问它?
答案 0 :(得分:1)
第一个问题:
如果我理解正确,你的问题是“当你尝试使用AJAX(在jquery函数内)发送一个post请求时,你没有点击所需的servlet”。
解决方案:
您需要将项目名称附加到网址。
因此,假设您的servlet位于名为"SomeProject"
的项目中,并且servlet将映射到名为"servletProcess"
的url。
所以你的jQuery看起来应该是这样的:
var json = [];
$('#update').click(function(){
$('.items').find('input').each(function(){
var tmp = "{id:" + $(this).attr('id') + ",quantity:" + $(this).val() + "}";
json.push(tmp);
});
$.ajax( {
url : '/SomeProject/servletProcess',
type : 'POST',
data : json,
dataType : 'json',
success: function(data) {
alert("success");
}
});
});
这应该可以解决问题:) 第二个问题:试试这个Similar Query