ajax调用错误的servlet

时间:2013-11-26 09:54:02

标签: java ajax java-ee servlets

奇怪的问题我似乎无法解决。

我在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中访问它?

1 个答案:

答案 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