Заполните строку данных в запросе ajax - PullRequest
1 голос
/ 04 февраля 2010

У меня есть форма, которая может иметь различное количество текстовых полей (содержит значение перевода).Их имена, например: «textfield_eng», «textfield_ger», «textfield_dut».

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

Это то, чтовызов данных выглядит так:

$.ajax({
   type: "POST",
   url: $("#optionForm").attr("action"),
   dataType: "xml",
   cache: false,
   data: { formname: $("#optionForm input[name='formname']").val(), 
    submit: $("#optionForm input[name='submit']").val()
    }, 
   success: function(xml){
                                bladibla....

И вот как я бы хотел, чтобы это было:

  $.ajax({
   type: "POST",
   url: $("#optionForm").attr("action"),
   dataType: "xml",
   cache: false,
   data: { formname: $("#optionForm input[name='formname']").val(), 
    submit: $("#optionForm input[name='submit']").val(),
textfield_eng : "english",
textfield_ger : "german",
textfield_dut : "dutch"
    }, 
   success: function(xml){
                               bladiblla...

Каков наилучший способ сделать это?

<input id="sOption_dut" name="sOption_dut" class="form_textfield" type="text" value="" />
<input id="sOption_eng" name="sOption_eng" class="form_textfield" type="text" value="" />
<input id="sOption_ger" name="sOption_ger" class="form_textfield" type="text" value="" />

Ответы [ 3 ]

2 голосов
/ 04 февраля 2010

Ну разобрался сам. Проверил в документации jquery и заметил, что вы также можете отправить строку данных в виде массива (как упомянуто в качестве комментария выше). Это заставило меня думать правильно.

Вот как это сделать:

    var aData = [];
    $("input", $("#myForm")).each(function(){
        aData.push({name: $(this).attr("name"), value: $(this).val()});
    });

    $.ajax({
        type: "POST",
        url: $("#myForm").attr("action"),
        dataType: "xml",
        cache: false,
        data: aData, 
        success: function(xml){
                           blablabla...

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

все это было так просто ...

2 голосов
/ 04 февраля 2010

Вы уже проверяли плагин jQuery Form ? Упрощает отправку форм через ajax.

0 голосов
/ 04 февраля 2010

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

$('<input />').attr({
                     id: 'sOption_dut',
                     name: 'sOption_dut',
                     class: 'form_textfield' ,
                     type: 'text',
                     value: ''
                    }).appendTo('form_or_otherwise_selector_here');

Выше показано, как создать поле ввода с указанными атрибутами и затем добавить его к какому-либо другому элементу (обычно к форме).

Имейте в виду, что указанный выше код должен выполняться либо при загрузке страницы, либо когда вы решите показать форму конечному пользователю. Его не следует помещать в код вызова ajax, поскольку это будет означать, что генерируется во время представления, не давая конечному пользователю возможности заполнить данные .. (если это не предполагаемый эффект ..)

изменить form_or_otherwise_selector_here до скажи ему, где разместить поле ввода

<ч /> В вашем коде есть опечатка

data: { formname: $("#optionForm input[name='formname']").val(), 
                submit: $("#optionForm input[name='submit']").val()
textfield_eng : "english",
textfield_ger : "german",
textfield_dut : "dutch",
                }

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

data: { formname: $("#optionForm input[name='formname']").val(), 
                submit: $("#optionForm input[name='submit']").val(),
textfield_eng : "english",
textfield_ger : "german",
textfield_dut : "dutch"
                }

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