【问题标题】:Servlet won't respond on AJAX call; will when called from consoleServlet 不会响应 AJAX 调用;从控制台调用时会
【发布时间】:2016-03-31 01:49:10
【问题描述】:

我有以下 ajax javascript。

我的js

  function updateCart() {
    var numRooms = $("input[name='rooms']").val();
    $.post("../ShoppingCart", {
      rooms: numRooms
    });
    checkCart();
  }

  function checkCart() {
    $.get("../CartSize", function(resp) {
      $('#cart').text(resp);
    });
  }

我的html

<button name="carryOn" onclick="updateCart()">Add to cart</button>

当单击具有 onclick="updateCart()" 属性的按钮时,servlet 接收到请求,但响应为空白。如果我从 javascript 控制台调用 updateCart() 函数,我会收到内容响应。为什么? Servlet 只是使用来自 HttpSession 会话的 PrintWriter 响应来写入文本。

我也试过

function updateCart() {
var numRooms = $( "input[name='rooms']").val();
$.post( "../ShoppingCart", {
    rooms: numRooms
}, function() {
    checkCart();
    });
}

【问题讨论】:

  • 你能告诉我们按钮的 html 吗?您是否确定在单击元素时甚至会调用该函数?顺便说一句,我建议使用像 $('#some-button').click(updateCart()); 这样的事件处理程序而不是 onclick 但这不是实际问题
  • 是的,我确定。我已经在 servlet 中包含了 println 语句,并且到达并调用了 servlet。从按钮单击调用时,响应只是空的。如果从 Firefox 中的 javascript 控制台调用,则响应符合预期。
  • .fail(function() { alert( "error" ); }) 你能试着把这个添加到你的函数中看看是否有任何错误
  • 你可以试试这个语法:$.ajax({ type: "POST", url: '../ShoppingCart', data: {rooms: numRooms}, success: function() {}, error: function(xhr, status, error) { console.log(xhr); console.log(status); console.log(error); } });,如果有控制台日志,请告诉我们,值是什么?

标签: jquery ajax servlets


【解决方案1】:

已解决。这个问题是按钮。显然,在未指定任何操作时刷新页面。更改为 input type="button" 可以修复它。

【讨论】:

  • 或者,
猜你喜欢
  • 2013-06-24
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2020-05-31
  • 2021-12-01
相关资源
最近更新 更多