如何在函数中停止Ajax调用

3

当用户按下提交按钮或按下回车键时,才会调用函数newMessage()。问题在于,即使没有调用newMessage(),AJAX脚本仍然会不断地调用。例如,如果我在input字段上输入任何内容,甚至没有点击提交,该值也会被AJAX传递。

我似乎无法理解如何停止这一过程,希望得到帮助。谢谢。

<div class="message-input">
  <div class="wrap">
    <input type="text" name="msg" id="msg" placeholder="Write your message..." />
    <i class="fa fa-paperclip attachment" aria-hidden="true"></i>
    <input type="hidden" value="0" name="convo_id" id="convo_id" readonly/>
    <button class="submit">
      <i class="fa fa-paper-plane" aria-hidden="true"></i>
    </button>
  </div>
</div>

function newMessage() {
  message = $(".message-input input").val();
  if ($.trim(message) == '') {
    return false;
  }
  var convo_id = document.getElementById("convo_id").value;
  var msg = $('#msg').val();
  $.ajax({
    cache: false,
    type: "POST",
    url: 'send_chat.php',
    data: ({
      convo_id: convo_id,
      msg: msg
    }),
    success: function(data) {
    }
  });
};

$('.submit').click(function() {
  newMessage();
});

$(window).on('keydown', function(e) {
  if (e.which == 13) {
    newMessage();
    return false;
  }
});

6
这个问题与Java无关。 - dbl
所以,您想要为任何“input”字段或仅为“convo_id”触发该事件。对吗? - Keyur Ramoliya
1个回答

3

jQuery Ajax 方法返回一个 XHR 对象。该对象包含 abort 方法。您可以按如下方式使用该链接

var xhr=jQuery.ajax({
        });

现在您可以使用abort方法,它将终止请求。
xhr.abort();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接