我的问题与删除功能成功,错误,完成有关

时间:2019-04-15 12:09:44

标签: javascript jquery

我正在使用jQuery3.x.x。如jquery 3.x.x发行说明中所述,方法成功,完成,错误均被删除。我在jquery 3.x.x ajax中使用成功函数。我的成功功能运行正常,而不是在控制台中记录错误。以供参考 https://jquery.com/upgrade-guide/3.0/#breaking-change-special-case-deferred-methods-removed-from-jquery-ajax
我的代码在这里:

<script src="jquery-3.3.1.js"></script>
<script>
$(document).ready(function() {
    $('#userName').click(function() {
        $.ajax({
            url : 'JqueryTest',
            data : {
                userName : $('#userName').val()
            },
            success : function(responseText) {
                alert(responseText);
                $('#ajaxGetUserServletResponse').text(responseText);
            }
        });
    }); 
});
</script>

最后,成功功能在这里起作用,相反,它应该在控制台中记录错误。

2 个答案:

答案 0 :(得分:1)

您会混淆两个具有相同名称的事物。

您在问题中链接的https://dotnet.microsoft.com/download/dotnet-framework说:

  

请注意,这对ajax回调根本没有任何影响   通过options对象传递的同名对象,该对象继续   存在并且不被弃用。这只会影响jqXHR方法。

写作时

$.ajax({
  ...
  success : function(responseText) {
  }
});

在您的代码中,这是通过以上引用中的$.ajax()选项指定的回调。如引文所述,这些选项尚未删除或弃用,并且将继续起作用。重要的是要注意,在此示例中,success option 的名称,而不是 function 的名称。您提供的功能是匿名的。

已删除的函数是属于jQuery Deferred对象类的那些-这是$ajax()返回的对象的类型。

例如,如果您的代码包含以下内容:

var deferredResponse = $.ajax({ 
  url: "http://www.example.com",
  method: "GET"
});

deferredResponse.success(function(response) {
  console.log(response);
});

...然后,“成功”功能在jQuery 3.0中将不再起作用。

您可以参考article来查看传递给$.ajax()的当前有效选项,也可以参考https://api.jquery.com/jQuery.ajax/来查看Deferred对象上当前可用的方法

答案 1 :(得分:0)

从jQuery 3.0开始,successerrorcomplete已被删除并替换为donefailalways,例如所以:

$.ajax( "example.php" )
  .done(function() {
    alert( "success" );
  })
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "complete" );
  });