jQuery collect select menus to post action

Представете си следната ситуация — имате страница с N на брой списъци (select). Имаме функционалност, която на промяна на даден елемент изпраща пост заявка към сървърния скрипт, а трябва да изпратим като асоцииран масив или обект всички текущи избрани елементи.

Разбира се, ако N <= 5 може и въобще да не ни интересува за някакъв по-удобен начин за събиране на данните, но представете си че имате 20+ елемента :-)

Ами…let’s do it:

function submitSelectData() {
    var selects = new Array();
    var values = new Array();

    $("select").each(function() {
        selects.push($(this).attr("name"));
        $(this, "option:selected").each(function() {
            values.push($(this).val());
        });
    });

    $.post("/script.php", {names: selects, vals: values}, function(response) {
        alert(response);
    });
}

$("select").change(function() {
    submitSelectData();
}); 

script.php:

<?php
$data = array();
$data = array_combine($_POST['names'], $_POST['values']);
echo '<pre>' . print_r($data, 1). '</pre>';
exit;
?>

Така винаги имаме точно предадени асоциирани (не забравяйте array_combine()), на всеки key(N) елемент отговаря value(N).

Post a comment or leave a trackback: Trackback URL.

Вашият коментар

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Промяна )

Twitter picture

You are commenting using your Twitter account. Log Out / Промяна )

Facebook photo

You are commenting using your Facebook account. Log Out / Промяна )

Connecting to %s

Follow

Get every new post delivered to your Inbox.