2011-11-10 8 views
0

フォームでは、たくさんのチェックボックスがあります。ユーザーがチェックボックスをクリックするたびに値を投稿するためにjquery ajaxを使用したいと思います。それは以下のコードのようなものでなければなりませんが、わかりません。それは動作していません。チェックボックスをjQueryで送信

<script type="text/javascript" > 
$(function() { 
$(".autosubmit_checkbox").click(function() { 

    var value = $(this).val(); 
    var name = $(this).attr('name');; 
    var dataString = 'value=' + value + '&name=' + name; 

    $.ajax({ 
     type: "POST", 
     url: "URL", 
     data: dataString, 
     success: function(){ 
      something; 
     } 
    }); 

    return false; 
}); 
}); 
</script> 
+0

asp.netを使用していますか? ASP:チェックボックス? –

+0

まあ、あるものの、URLはウェブアドレスを指す必要があります。また、同じ関数で '$(this)'を2回行うべきではありません。この 'var $ this = $(this);'を実行し、 '$ this'を代わりに使用してください。 – arb

+1

また、特に動作していないものについては言わなかった。 – arb

答えて

0

あなたが「通常」の方法でクエリ文字列のチェックボックスの値を提出する場合は、単一の要求引数を構築する必要があります。

var dataString = $(this).attr('name') + "=" + encodeURIComponent($(this).val()); 

serialize()この文字列はあなたのために計算されますが、チェックボックスがオフの場合は空の文字列を返します。これは明らかにあなたが望むものではありません。

+0

ありがとう、それは動作するはずです。しかし、小さな問題がある、私はチェックボックスをチェックすることはできません。何が問題なのでしょうか? – seferov

+0

@Farhad、これは、あなたの 'click'ハンドラから' false'を返すので、デフォルトの動作が起こらないようにしています(またイベントがバブリングしないようにするためです)。 –

0
<script type="text/javascript" > 
$(function() { 
$(".autosubmit_checkbox").click(function() { 

    var value = $(this).is(':checked')?"1":"0"; 
    var name = $(this).attr('name');; 
    var dataString = 'value=' + value + '&name=' + name; 

    $.ajax({ 
     type: "POST", 
     url: "URL", 
     data: dataString, 
     success: function(){ 
      something; 
     } 
    }); 

    return false; 
}); 
}); 
</script> 
0
var value = ($(this).is(':checked')) ? 1 : 0; 
0

$(this).val()の代わりに$(this).is(':checked')を使用し、falseを返さないようにしてください。チェックボックスが実際にチェックされないようにします(ただし、必要な振る舞いでない限り)。

関連する問題