jquery.form.js - Как получить текущую форму при отправке?

У меня есть эта разметка

<form action="..." id="form1" class="foo">...</form>
<form action="..." id="form2" class="foo">...</form>
...

и у меня есть этот код Javascript

$('.foo').ajaxForm({
    dataType: 'json',
    success: function (data) {
       // TODO: How do I get the form that triggered this?
       console.log( $(this) );
    }
});

Как вы можете видеть в коде Javascript, я хочу получить текущий элемент формы, когда он будет успешно отправлен. Вывод $(this) не показал мне ничего, что указывает на текущий элемент формы.

Как мне получить текущий элемент формы внутри функции успеха?


person developarvin    schedule 25.06.2014    source источник
comment
Вы хотите получать данные текущей формы при отправке? Какой язык программирования вы используете в @ Backend?   -  person Pratik    schedule 25.06.2014
comment
@PratikJoshi Не данные. Я хочу элемент формы.   -  person developarvin    schedule 25.06.2014
comment
onClick () вы можете вызвать функцию, которая устанавливает в переменной идентификатор формы.   -  person T-student    schedule 25.06.2014


Ответы (4)


Предполагая, что вы используете плагин jQuery Form

Вы можете использовать 4-й параметр

 success: function (data, statusText, xhr,  form ) {

Ссылки

успех: функция обратного вызова, которая будет вызываться после отправки формы. Если предоставляется функция обратного вызова «успеха», она вызывается после того, как ответ был возвращен с сервера. Передаются следующие аргументы:

  1. responseText или responseXML значение (в зависимости от значения параметра dataType).
  2. statusText
  3. xhr (или элемент формы, завернутый в jQuery, если используется jQuery ‹1.4)
  4. элемент формы с оболочкой jQuery (или undefined при использовании jQuery ‹1.4)
person Satpal    schedule 25.06.2014
comment
Это именно то, что мне нужно. Спасибо! - person developarvin; 25.06.2014

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

context для передачи this в функцию успеха

проверьте следующие ссылки: дублировать

параметр контекста $ .ajax

Как передать контекст объекта в обратный вызов jQuery.ajax JSONP?

person Mr7-itsurdeveloper    schedule 25.06.2014

используйте обратный вызов beforeSubmit:

beforeSubmit: function(arr, $form, options){
    options.context = $form;
}

Здесь $form - это текущая форма, которая становится ajaxified, и вы можете добавить контекст к options текущего ajaxForm с помощью options.context = $form;. Итак, теперь он будет содержать текущую отправляемую форму, и вы можете получить текущий контекст.


что-то вроде этого:

$('.foo').ajaxForm({
   dataType: 'json',
   beforeSubmit: function(arr, $form, options){
    options.context = $form;
   },
   success: function (data) {
     // TODO: How do I get the form that triggered this?
     console.log( $(this) );
   }
});
person Jai    schedule 25.06.2014

Вы можете изменить свой код следующим образом:

var fooForm = $('.foo');
fooForm.ajaxForm({
    dataType: 'json',
    success: function (data) {
       // TODO: How do I get t

       console.log( fooForm);
    }
});

Вы не можете получить $ (this), потому что в успешной функции обратного вызова this указывает на окна.

Фактически, ваш код можно написать в таком стиле:

var fooForm = $('.foo');
fooForm.ajaxForm({
    dataType: 'json',
    success: successCallback
});
function successCallback(data){
    //'this' point to window : ) 
    console.log( fooForm);

}

Надеюсь, это поможет. :)

person Tyler.z.yang    schedule 25.06.2014