2

重複の可能性:
チェックされていないチェックボックスを投稿する

空の配列入力のシリアル化に問題があります。例えば:

<input type="checkbox" name="test_checkbox[]" value="test" id="test">
<input type="checkbox" name="test_checkbox[]" value="test1" id="test1">
<input type="checkbox" name="test_checkbox[]" value="test2" id="test2">

これらのいずれもチェックされず、(POST 経由で) フォームを送信すると、jQuery.serialize() はそれらを除外し、$_POST/Serialized String に表示されません。

しかし、何もチェックされていない場合、test_checkbox = 0のようなものが必要です。

どうやってやるの?

4

2 に答える 2

0

これをサーバーコードに挿入するだけです

$_POST['test_checkbox'] = isset($_POST['test_checkbox']) ? $_POST['test_checkbox'] : 0;

クライアントによって変数が設定されていない場合、$_POST['test_checkbox']変数は 0 に設定されたままになります。ただし、のエントリをリセットする代わりに、新しい変数を使用することをお勧めし$_POSTます。

于 2012-09-25T10:36:01.793 に答える
0

この方法を試す DEMO

   <form id="testform">
        <input type="checkbox" name="test_checkbox[0]" id="test" checked="checked" value="true"/>
        <input type="checkbox" name="test_checkbox[1]" id="test1" checked="checked" value="true"/>
    <span>click</span>
    </form>

脚本

$('span').click(function() {
    var formDate = $('#testform').serialize();
    console.log(formDate);
})​

Now You Want Like This Wayデモを見る

$('span').click(function() {
     var str=$('form input:not([type="checkbox"])').serialize();
    var str1=$("form input[type='checkbox']").map(function(){return this.name+"="+this.checked;}).get().join("&");
    if(str1!="" && str!="") str+="&"+str1;
    else str+=str1; 
    alert(str);
})​
于 2012-09-25T10:28:54.927 に答える