Ajax请求未在新版本的jquery中触发

时间:2017-07-04 14:34:06

标签: javascript jquery ajax

我有一个小脚本,用于检查数据库中的用户名是否已被采用,如果它可用,它会说是可用的。目前,以下代码在jQuery v1.7.2中完美运行

我怎么需要更新它以使用当前版本的jQuery v3.2.1, 但是试图使用当前的jquery版本,它只是说检查可用性而没有别的。

$(document).ready(function() {
  $("#username").keyup(function() {
    var username = $("#username").val();
    var msgbox = $("#status");

    if (username.length > 3) {
      $("#status").html('');

      $.ajax({
        type: "POST",
        url: "includes/user_check.php",
        data: "username=" + username,
        success: function(msg) {
          $("#status").ajaxComplete(function(event, request) {
            if (msg == 'OK') {

              $("#username").removeClass("red");
              $("#username").addClass("green");
              msgbox.html('Available');
            } else {
              $("#username").removeClass("green");
              $("#username").addClass("red");
              msgbox.html(msg);
            }

          });
        }
      });
    } else {
      $("#username").addClass("red");
      $("#status").html('<font color="#cc0000">To Short</font>');
    }
    return false;
  });
});

3 个答案:

答案 0 :(得分:2)

你的ajaxComplete附在错误的地方。 根据{{​​3}}

  

附加说明:

     

从jQuery 1.9开始,jQuery全局Ajax事件的所有处理程序,包括那些添加了.ajaxComplete()方法的处理程序,都必须附加到文档中。

     

如果在全局选项设置为false的情况下调用$ .ajax()或$ .ajaxSetup(),则不会触发.ajaxComplete()方法。

尝试更改此部分:$("#status").ajaxComplete(function(event, request) {

UPD:实际上,您在实施中甚至不需要此功能。 success将为您完成

答案 1 :(得分:1)

这个答案可能不太正确,因为它取决于你所指的jQuery的版本,但是从3.0开始,成功,错误和完整的回调都被删除了。应该用done,fail&amp;总是

http://api.jquery.com/jquery.ajax/

$.ajax({
    type: method,
    url: url,
    data: ""
}).done(function (resp) {

}).fail(function (resp) {

}).always(function () {

});

答案 2 :(得分:1)

如果您不熟悉jQuery并且无法得到直接答案,您可以随时使用jQuery migrate。如果你在这里得不到任何帮助,这可能对你有所帮助。