Получить все значения элементов формы, которые будут присоединены для вызова ajax - PullRequest
1 голос
/ 06 октября 2010

У меня есть объект, который находится внутри формы.

Его значение присваивается вызову ajax, как этот

var $$ = $(this);
if (typeof settings.data == 'string') {
   data = settings.data + '&' + this.name + '=' + $$.val();
 } else if (typeof settings.data == 'object') {
data = settings.data;
    data[this.name] = $$.val();
 }

Я хочу получить родительскую форму этого элемента,и перебрать все входы и добавить это тоже к данным, которые будут использоваться при вызове Ajax.

Я хочу, чтобы имя ввода было ключом для массива данных.

Возможно, что-то вроде:

var form = $$.parents('form:first');

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

Как это сделать с помощью jQuery?

Ответы [ 2 ]

4 голосов
/ 06 октября 2010

Я думаю, что вы заново изобретаете колесо, уже есть метод .serialize() специально для этого, например:

var data = $(this).closest("form").serialize();

Или, если вы хотите, чтобы представление объектаВы можете циклически проходить / добавлять к, вы можете использовать .serializeArray(), а затем манипулировать им, прежде чем передавать его в качестве параметра данных.Непонятно, точно что вы ищете, но звучит , как будто вы просто хотите передать всю форму в качестве аргумента данных $.ajax() или сокращенная версия , в этом случае .serialize() будет идеальным.

0 голосов
/ 06 октября 2010

Вы видели плагин jQuery 'Form'.use?
http://www.google.com.au/search?q=jquery+form+plugin&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

Он сделает всю работу за вас и будет работать даже для загрузки файлов (создавая скрытый iframe на летуи представить его).Он также может использовать формат JSON и / или XML.PRetty handy one.

См. Примеры
http://jquery.malsup.com/form/#tab4

Предполагая, что обработчик AJAX является st в качестве цели формы, это так просто:

$('#myForm1').ajaxForm();

Вы также можете переопределить множество опций:

// prepare the form when the DOM is ready 
$(document).ready(function() { 
    var options = { 
        target:        '#output1',   // target element(s) to be updated with server response 
        beforeSubmit:  showRequestFunction,  // pre-submit callback 
        success:       showResponseFunction  // post-submit callback 

        // other available options: 
        //url:       url         // override for form's 'action' attribute 
        //type:      type        // 'get' or 'post', override for form's 'method' attribute 
        //dataType:  null        // 'xml', 'script', or 'json' (expected server response type) 
        //clearForm: true        // clear all form fields after successful submit 
        //resetForm: true        // reset the form after successful submit 

        // $.ajax options can be used here too, for example: 
        //timeout:   3000 
    }; 

    // bind form using 'ajaxForm' 
    $('#myForm1').ajaxForm(options); 
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...