передать все выбранные значения в php - PullRequest
0 голосов
/ 09 октября 2009

У меня есть одно поле выбора:

<select name="sub_selected" class="bmarks" id="sub_selected" 
style="width:400px" size="5">
            <option value="1">first value</option>
            <option value="2">second value</option>
            <option value="4">other vale</option>
                                  </select>

Я хочу передать все значения в php.

Я пишу следующий код, но он не работает:

$('#sub_selected').each(function(i, selected){
        foo[i] = $(selected).val();

                var title     = $('#prop_tile').attr('value');
                $.ajax({
                type: "POST",
                url: "add_process.php",
                data: "title="+ title +"& stages="+ foo,
                success: function(html){
                if (html==1){
                $('div.saving').hide();
                $('div.success').fadeIn();
                }else {
                $('div.saving').hide();
                $('div.nosuccess').fadeIn();
                }

                }
                });

Я хочу отправить все значения окна выбора в php для хранения в mysql, предпочтительно в этом формате (1,2,4).

Спасибо

Ответы [ 3 ]

4 голосов
/ 09 октября 2009

Я не знаю много о jquery, но мне кажется, что вы можете решить вашу проблему исключительно на уровне HTML, если ваш jquery просто отправит форму, содержащую ваш тег <select>. <select> ведет себя так, что браузер отправляет данные только в выбранном сообщении. Если параметры не выделены, они не будут отправлены на сервер в вашем POST.

Вы можете решить это следующим образом; Прежде всего, ваш <select> нуждается в атрибуте multiple="multiple", чтобы можно было выбрать более одного элемента. Во-вторых, добавьте атрибут selected="selected" к каждому из тегов <option>. И наконец, если вы не хотите, чтобы пользователь отменил выбор каких-либо параметров перед отправкой формы, добавьте атрибут disabled="disabled" к тегу <select>.

ОБНОВЛЕНИЕ: Вы также можете изменить name="sub_selected" на name="sub_selected[]", чтобы вы могли получить значение в виде массива на стороне PHP. Вам нужно настроить ссылки jquery от sub_selected до sub_selected[].

0 голосов
/ 09 октября 2009

Если вы действительно хотите сделать это с помощью jquery, вот простой / правильный способ сделать это:

// I'm not sure what the '#prop_tile' element is so I didn't 
// include it for this example
var all_vals = new Array; 
$('#sub_selected option').each(function() {
    all_vals.push($(this).val());
});
$.post('add_process.php', { stages:all_vals }, function(html) {
    $('div.saving').hide();
    $('div.success').fadeIn();
},'html');

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

<?php
if(isset($_POST['all_vals'])) {
    $all_vals = $_POST['all_vals'];
    // $all_vals is now an array = [1,2,4]
}
?>

ПРИМЕЧАНИЕ : Было бы неплохо, если бы вы раскрыли более подробную информацию о том, почему вы хотели бы сделать это, потому что, на мой взгляд, это глупо.

0 голосов
/ 09 октября 2009

Если вы действительно хотите ВСЕХ из них, не делайте так. Получите их в PHP так же, как вы отображали опции выбора.

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