Опция $ .ajax context

Эпизод 11 подкаста yayQuery упоминает опцию $ .ajax context . Как использовать эту опцию в обратном вызове успеха? То, что я сейчас делаю, передает мои входные параметры обратно в обратный вызов успеха, чтобы я мог анимировать идентификатор, который был вызван после успеха / ошибки. Если я использую параметр контекста, то, возможно, мне не нужно передавать параметры обратно из вызываемой процедуры.

В этом примере я передаю STATEID обратно в поле успеха, чтобы состояние удалялось из DOM после его удаления из базы данных:

$('td.delete').click(function() { var confirm = window.confirm('Are you sure?'); if (confirm) { var StateID = $(this).parents('tr').attr('id'); $.ajax({ url: 'Remote/State.cfc', data: { method: 'Delete', 'StateID': StateID }, success: function(result) { if (result.MSG == '') { $('#' + result.STATEID).remove(); } else { $('#msg').text(result.MSG).addClass('err');; }; } }); } }); 

Весь context делает это, устанавливая значение this в обратных вызовах.

Поэтому, если вы находитесь в обработчике событий, и вы хотите, чтобы this в обратных вызовах являлось элементом, который получил событие, вы бы сделали:

 context:this, success:function() { // "this" is whatever the value was where this ajax call was made } 

Если вы хотите, чтобы это был другой тип, просто установите это, и this будет означать следующее:

 context:{some:'value'}, success:function() { // "this" the object you passed alert( this.some ); // "value" } из них context:{some:'value'}, success:function() { // "this" the object you passed alert( this.some ); // "value" } 

В коде, добавленном к вопросу, вы можете использовать StateID , но вам не понадобится, поскольку у вас уже есть доступ к этой переменной.

 var StateID = $(this).parents('tr').attr('id'); $.ajax({ url: 'Remote/State.cfc' ,data: { method:'Delete' ,'StateID':StateID } ,context: StateID ,success: function(result){ alert(this); // the value of StateID alert(StateID); // same as above if (result.MSG == '') { $('#' + result.STATEID).remove(); } else { $('#msg').text(result.MSG).addClass('err');; }; } }); 

Если вы установите параметр контекста, то this будет успешным, как и значение для context . Поэтому, если вы передаете объектный литерал, содержащий ваши имена входных параметров и значения в качестве контекста, то при успехе вы можете использовать this.param1 чтобы получить значение вашего первого входного параметра.

Подробнее см. В документах .ajax () .

  • JQuery Grid-SubGrid для отношения родитель-ребенок
  • Как выбрать конкретный элемент формы в jQuery?
  • Как я могу проверить, существует ли опция, уже выбранная JQuery
  • переполнение элементов с помощью jquery
  • Создавайте, читайте и удаляйте cookies с помощью jQuery
  • Обратный вызов ошибки JQuery ajax
  • Эффективное обнаружение при перекрытии элементов Sibling Elements
  • Обратный вызов jQuery при загрузке изображения (даже при кэшировании изображения)
  • jQuery: external html ()
  • Есть ли хороший плагин загрузки файлов jQuery для Drag-and-drop?
  • Каковы существенные различия между $ (sel) .bind ("click", $ (sel) .click (, $ (sel) .live ("click", $ (sel) .on ("click"?
  • Давайте будем гением компьютера.