Есть ли способ отправить данные из разных форм одновременно только с одной кнопкой отправки? - PullRequest
1 голос
/ 28 июля 2011

Это мое тело. Я хочу отправить более 1 данных из разных форм одновременно с помощью одной и той же кнопки. Возможно ли это в php?я хочу, чтобы первая форма отправляла выбранную одну секунду, отправляла текстовое значение ...

<body>      
<div id="kategoriler">
<h4>Kategoriler</h4>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<select name="mydropdown">
<option value="Oteller">Oteller</option>
<option value="Restaurant">Restaurant</option>
<option value="Cafe">Cafe</option>
<option value="Bar">Bar</option>
<option value="Köy">Köy</option>
</select>
</form>
</div>
<div id ="text">
<h4>Başlik</h4>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="baslik" value="" maxlength="100" />
<h4>Açıklama</h4>
<textarea rows="30" cols="70">
 Buraya yazın...
</textarea>
</form>
</div>
<div id="bresim">
<h4>Başlik Resmi</h4>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"  enctype="multipart/form-data">
<label for="file">Resmi Seçin:</label>
<input name="uploaded" type="file" />
</form>
</div>
<div id="ekle">
<input type="submit" name="submit" value="Eklemek için tıklayın!" />
</div>
</body>

Ответы [ 3 ]

4 голосов
/ 28 июля 2011

Если вы используете jQuery ...

Сначала дайте вашим формам и отправьте кнопкам несколько идентификаторов (я использовал # form1, # form2 и #submit).Тогда ...

Редактировать: Вот решение, отличное от AJAX, которое использует тот факт, что формы публикуют по одному и тому же URL.

Когда кнопка отправкищелкните, переместите / добавьте текстовый ввод $(input[name=baslik]) ко второй форме и затем отправьте его.Это решение не нуждается в плагине jQuery Form и не использует AJAX:

$("#form2").submit(function() {
    $(input[name=baslik]).appendTo($(this));
});

Оригинальное решение AJAX:

Если вы хотите AJAX, вы можетеиспользуйте плагин jQuery Form .

$(document).ready(function() { 
    $('#form1, #form2').ajaxForm(function() { 
        // optionally do stuff here after forms submitted
    });

    $('#submit').click(function() {
        $('#form1, #form2').ajaxSubmit();
        return false; 
    });
});

Вы не можете использовать jQuery $(form).serialize(), потому что он не работает с полями файла.Это решение также предполагает, что вы хотите использовать AJAX.

2 голосов
/ 28 июля 2011

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

Так что-то вроде:

$("#first_form").submit(function() {
    //collect all values here
    first_form_data = $("#first_form").serialize();
    second_form_data = $("#second_form").serialize();

    $.ajax({
         url: ..,
         data: first_form_data + "&" + second_form_data,
         success: function(data) {

         }
    }

    //let’s not submit the form
    return false;
}
2 голосов
/ 28 июля 2011

Да.

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

function submitAll(){
   document.forms["IDform1"].submit();
   document.forms["IDform2"].submit();
}

РЕДАКТИРОВАТЬ: это не работает, единственный способ через AJAX, пожалуйста, проверьте ответ @ Фила!

...