这里有一个奇怪的问题,我似乎无法解决。
我正在 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中访问它?
最佳答案
第一个问题:
如果我理解正确,您的问题是“当您尝试使用 AJAX(在 jquery 函数内)发送发布请求时,您没有点击所需的 servlet”。
解决方案:
您需要将项目名称附加到 URL 中。
假设您的 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
关于java - ajax 调用错误的 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20213626/