Dizideki select değerlerini gönder

4 Cevap php

Ben html böyle seçim listesi var:

<input type="checkbox" name="drive_style" value=1 checked />123<br />
<input type="checkbox" name="drive_style" value=2 />123<br />
<input type="checkbox" name="drive_style" value=3 checked /> 123<br />
<input type="checkbox" name="drive_style" value=4 />123<br />
<input type="checkbox" name="drive_style" value=5 checked />123<br />

Ben bir dizi gibi (jquery ile ajax kullanıyorum) php script checked kutuları (1, 3, ...) values göndermek zorunda. Gibi bir şey: drive_style[index].

    $.post('post_reply.php', {'drive_style'  : $('drive_style')}, function(data){
        alert(data);
    });

PHP komut dosyası:

print_r($_POST['drive_style']);

[Object Object]


upd: My new code:

<input type="checkbox" name="drive_style[]" value=1 checked />123<br />
<input type="checkbox" name="drive_style[]" value=2 />123<br />
<input type="checkbox" name="drive_style[]" value=3 checked />123<br />
<input type="checkbox" name="drive_style[]" value=4 />123<br />
<input type="checkbox" name="drive_style[]" value=5 checked />123<br />

    $.post('post_reply.php', {'drive_style':$('input[name=drive_style]').serialize()}, function(data){
        alert(data);
    });

Bu boş bir dize uyarır.

4 Cevap

​$(function() {
var serial = $('input[name=drive_style]').serialize();
//php -> $('input[name=drive_style[]]').serialize();
  alert( serial );
});​

Bu size:

drive_style=1&drive_style=3&drive_style=5

ama php ile çalışmak için de bu gibi giriş isim olması gerekir:

<input type="checkbox" name="drive_style[]" value=1 checked />123<br />

NOTE: drive_style[]

tabii ki sizi giv:

drive_style[]=1&drive_style[]=3&drive_style[]=5

Diğerleri de söylediğim gibi, tipik 'dizi' adlandırma sistemine göre girişleri isim olmalıdır. PHP otomatik olarak bir diziye istek değişkenleri dizi sözdizimi dönecek. Böylece, forma onay kutularını isim olmalıdır drive_style[name]. JQuery bu bilgileri göndermek için biz sadece formu serialize: $('form_id').serialize() hile yapmak gerektiğini. Aşağıdaki gibi:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <title>Test</title>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
        <script type="text/javascript" charset="utf-8">

            function jquerySubmit()
            {
                $.post('http://localhost/test.php', $('#checkboxform').serialize(), function(data) {
                    alert(data);
                });
            }

        </script>
    </head>
    <body>
        <form id="checkboxform" action="http://localhost/test.php" method="post">

            <input type="checkbox" name="drive_style[one]" /> One<br />
            <input type="checkbox" name="drive_style[two]" /> Two<br />
            <input type="checkbox" name="drive_style[three]" /> Three<br />

            <input type="submit" value="Submit Form" /> <input type="button" value="Submit AJAX Request" onclick="jquerySubmit()" />
        </form>
    </body>
</html>

Ve PHP tarafında bu bilgileri okumak için de çok basit:

// http://localhost/test.php
<?php

    echo time(), "\n";

    if (isset($_POST['drive_style']) && is_array($_POST['drive_style']))
    {
        echo implode(", ", array_keys($_POST['drive_style']));
        echo "\n\n";    
    }

    print_r($_POST);

Özellikle bu adlandırma kuralı da düzenli formu göndermek için izin verir.

<input type="checkbox" name="drive_style[key]" value=2 />123<br />

Sadece zaten girişler kontrol alırsınız.

Sen formları ile veri serileştirilebilir alabilirsiniz

$('form_selector_here').serialize();

POST için kullanılan ve GET (ve-işaretli değil olanlar orada olmayacak) aynı biçimi olan

Sizin durumunuzda giriş dizisi kullanıyorsanız, bu gibi tüm adın giriş için [] eklemeniz gerekir:

<input type="checkbox" name="drive_style[]" value=1 checked />123<br />
<input type="checkbox" name="drive_style[]" value=2 />123<br />
...

bundan sonra sizin php kodu kontrol girişini alabilirsiniz.