2009-03-11 2 views
3

Каков наилучший способ подключить функциональность AJAX к существующей форме с использованием jQuery и разрешить обратный вызов обработки ошибок.jQuery plug-in для подключения формы AJAX - ДОЛЖЕН предоставить обратный вызов

В jQuery.ajax(...) построен в функции имеет следующие (полезные) функции обратного вызова:

beforeSend

полный

dataFilter

ошибка

успех

Я думал, что нашел свой ответ с плагином jQuery.Form, но по какой-то сумасшедшей причине они не дают вам доступа к обратному вызову! Помимо этого упущения, это кажется весьма полезным.

Я действительно смущен в целом количеством статей, которые рекомендуют использовать jQuery.get, прежде чем они порекомендуют jQuery.ajax. Просто напомню: get() не имеет обратного вызова ошибки, но ajax() делает.

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

Есть ли еще какие-нибудь другие плагины - особенно что-то, что хорошо работает с ASP.NET MVC, что я должен использовать, чтобы упростить подключение?

ответ

6

Это очень простой фрагмент, который я скопировал из моего проекта и немного взломал его (едва тестировал). Дайте мне знать, если это сработает.

(function() { 
$.fn.ajaxify = function(options) { 
    $(this).submit(function(e) { 
     var form = $(this); 
     $.ajax({ 
      type : form.attr('method'), 
      url : form.attr('action'), 
      data : form.serialize(), 
      error : options.error, 
      success : options.success, 
      dataType : "script" 
     }); 

     return false; 
    }); 
} 
})(); 

использовать его:

$('form').ajaxify(
    {success: success_method_name, 
    error: error_method_name}); 
+0

становится сонным, но я проверю его и отчитаю. но да, это то, что я ищу, но, вероятно, (успех, ошибка), а не просто (ошибка) –

+0

Я не смотрел, но должен быть обратный вызов успеха тоже –

+0

ajaxForm, безусловно, имеет успешный обратный вызов как beforeSerialize, который я знаю, я использую –

-2

Почему бы не использовать JSon? Вы можете собирать данные из формы и отправлять запрос JSon.

+0

он будет возвращать JSon - я jsut говорю о том, как на самом деле подключить событие. см. ответ @ efalcao на тот код, который я искал. Я хочу написать этот код только один раз - либо сам, либо в стороннем плагине –

0

Вы пробовали настройки обработчика через $.ajaxError()?

+0

Обычно мне нужна ошибка, специфичная для рассматриваемого компонента. например, у меня может быть элемент «отправить вопрос», который можно использовать на нескольких страницах. если бы была ошибка, я бы хотел, чтобы она сказала: «Извините, что ваш вопрос не был представлен в это время». но я согласен, что ajaxError не может навредить слишком –

3

Согласно этой странице:.

http://www.malsup.com/jquery/form/#api

«Учтите, что объект Параметры могут быть также использованы для передачи значений в $ .ajax метода JQuery, если вы знакомы с параметрами, поддерживаемых $ .ajax вы можете использовать их в объекте Options, переданном ajaxForm и ajaxSubmit. "

Это включает в себя «ошибки» обработчик параметров, однако я не могу заставить его работать ...

Rich

1

Это не может быть проблемой больше, потому что я просто подключил обратного вызова ошибки просто хорошо.

e.г:

$("form#new_asset").ajaxForm({ 
    error: function(a, b, c) { 
    alert('error') 
    } 
}); 
+0

Извините, это похоже на работу :( – Barun

0

Просто протестировано и Крис О'Салливан действительно правильно, хотя в данный момент я думаю, что это недокументированная.