gpt4 book ai didi

java - ajax 调用错误的 servlet

转载 作者:行者123 更新时间:2023-12-01 13:47:53 26 4
gpt4 key购买 nike

这里有一个奇怪的问题,我似乎无法解决。

我正在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com