#javascript #jquery
#javascript #jquery
Вопрос:
Я использую jQuery 3.x.x. Как упоминалось в примечании к выпуску jquery 3.x.x, метод success, complete, error удаляется. Я использую функцию успеха с 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>
Наконец, здесь работает функция успеха, вместо этого она должна регистрировать ошибку в консоли.
Комментарии:
1. чего именно вы хотите?
2. Пожалуйста, опишите подробнее, в чем ваш вопрос.
Ответ №1:
Вы путаетесь между двумя разными вещами, которые имеют одно и то же имя.
В статье, на которую вы ссылались в вопросе, говорится:
Обратите внимание, что это никак не влияет на обратные вызовы ajax с тем же именем, передаваемые через объект options, которые продолжают существовать и не являются устаревшими. Это влияет только на методы jqXHR.
Когда вы пишете
$.ajax({
...
success : function(responseText) {
}
});
в вашем коде это обратный вызов, указанный с помощью $.ajax()
параметров, упомянутых в приведенной выше цитате. Как говорится в цитате, эти параметры не были удалены или устарели и будут продолжать работать. Важно отметить, что в этом примере success
это имя параметра, а не имя функции. Предоставленная вами функция является анонимной.
Функции, которые были удалены, — это те, которые принадлежат Deferred
классу объектов jQuery — это тип объекта, который возвращается $ajax()
.
Так, например, если ваш код содержал что-то вроде этого:
var deferredResponse = $.ajax({
url: "http://www.example.com",
method: "GET"
});
deferredResponse.success(function(response) {
console.log(response);
});
… тогда функция «success» больше не будет работать в jQuery 3.0.
Вы можете обратиться к https://api.jquery.com/jQuery.ajax / чтобы увидеть, какие параметры в данный момент действительны для перехода $.ajax()
, а также для https://api.jquery.com/category/deferred-object / чтобы узнать, какие методы в данный момент доступны для Deferred
объекта.
Ответ №2:
Начиная с jQuery 3.0, success
, error
и complete
был удален и заменен на done
, fail
и always
, вот так:
$.ajax( "example.php" )
.done(function() {
alert( "success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "complete" );
});
Комментарии:
1. Начиная с jQuery 3.0 ошибка успеха и завершения была удалена. но я использую success с jQuery 3.0. я получаю результат правильно. не ошибка. но почему…..
2. мой вопрос заключается в том, что успех был удален в jQuery 3.0.so не следует использовать success с jQuery 3.0, но success, который я уже использую с jQuery 3.0.почему ..?
3. метод
success()
был удален, ноsetting
ajax()
вызываемый forsuccess
по-прежнему доступен. Дополнительная информация: api.jquery.com/jQuery.ajax