Можете ли вы отложить установку ajax в jquery 1.5? - PullRequest
0 голосов
/ 02 марта 2011

У меня есть что-то вроде этого

 $.ajaxSetup({
        cache: false
    });

Мне интересно, можете ли вы сделать ajaxSetup, как вы можете сделать $ .ajax

var jqxhr = $.ajax({ url: "example.php" })
    .success(function() { alert("success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });

Так я мог сделать

 var a =    $.ajaxSetup({
            cache: false
        })

тогда

a.success(function() { alert("success"); })

У меня еще не было возможности попробовать это. Однажды у меня будет несколько минут, чтобы попробовать это, но если кто-то знает, это тоже будет хорошо. Я также не вижу ничего в документации.

Ответы [ 2 ]

1 голос
/ 02 марта 2011

AFAIK, нет, вы не сможете этого сделать - .ajaxSetup() не является защищенным объектом , в отличие от .ajax() по состоянию на jQuery v1.5 .Таким образом, вы получите сообщение об ошибке, в котором говорится, что у объекта нет методов.

Если вы пытаетесь настроить то, что происходит с каждым .ajax() вызовом (.ajaxSetup() устанавливаетпо умолчанию для всех вызовов .ajax()) .Вы можете получить доступ к глобальным обратным вызовам ajax, таким как:

$.ajaxComplete(function(){alert("complete");}) $.ajaxError(function(){alert("error");}) $.ajaxSuccess(function(){alert("success");})

если вы хотите выполнить действия с ALL ajax-вызовами, если это то, к чему вы стремитесь?У вас также будет доступ ко всем параметрам обратного вызова:

.ajaxError(event, XMLHttpRequest, ajaxOptions, thrownError)


Обновления для последующих комментариев:

Согласно документам для .ajaxSetup () :

Примечание: Глобальные функции обратного вызова должны быть установлены с соответствующими им глобальными методами-обработчиками событий Ajax: .ajaxStart () , .ajaxStop () , .ajaxComplete () , .ajaxError () , .ajaxSuccess() , .ajaxSend () , а не внутри объекта параметров для $. AjaxSetup ()

Так что, похоже, нетглобальный обработчик для statusCode, такой как обратный вызов, добавленный в 1.5.Однако, опять же, согласно документам :

Если запрос выполнен успешно, функции кода состояния принимают те же параметры, что и обратный вызов успеха;если это приводит к ошибке, они принимают те же параметры, что и обратный вызов ошибки.

Поэтому я думаю, вы можете использовать, например:

$('body').ajaxSuccess(function(e, xhr, settings) {
    if (xhr.status == "200")
        alert("Your call to: '"+settings.url+"' was a success (status code: "+xhr.status+")");
});

$('body').ajaxError(function(e, xhr, settings) {
    if (xhr.status == "401")
        alert("You are not logged into the remote page!");
    if (xhr.status == "404")
        alert("The remote page could not be found: '"+settings.url+"'(status code: "+xhr.status+")");
});

Посмотрите надемоверсия здесь показывает успешный и неуспешный вызов .ajax() - показывает локальные и глобальные действия, включая работу с различными statusCodes.

0 голосов
/ 02 марта 2011

Насколько я понимаю, AjaxSetup(..) изменяет объект jQuery.AjaxSettings по вашему выбору.Таким образом, вы можете написать

 jQuery.ajaxSettings.cache=false

для достижения того же результата.

Более подробную информацию можно найти здесь: http://onwebdev.blogspot.com/2010/06/jquery-unveiled-ajaxsettings-class.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...