2011-11-10 3 views
0

В той форме, в которой я работаю, есть много флажков. Я хочу использовать jquery ajax для публикации значения каждый раз, когда пользователь нажимает на этот флажок. Это должно быть что-то вроде кода ниже, но я не уверен. Это не работает.Отправить checkbox от 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: checkbox? –

+0

Ну, с одной стороны, URL-адрес должен указывать на веб-адрес. Кроме того, вы не должны делать '$ (this)' дважды в одной и той же функции. Сделайте это 'var $ this = $ (this);' Тогда просто используйте '$ this' вместо этого. – arb

+1

Также вы не сказали, что конкретно не работает. – arb

ответ

0

Если вы хотите передать значение с флажком в строке запроса «обычным» способом, вы должны построить один запрос аргумент:

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

serialize() будет вычислять эту строку для вас, но она возвращает пустую строку, если флажок снят, что явно не то, что вы хотите.

+0

спасибо, он должен работать. Однако есть небольшая проблема, я не могу установить флажок. Что может быть проблемой? – seferov

+0

@Farhad, это потому, что вы возвращаете 'false' из вашего обработчика' click', тем самым предотвращая поведение по умолчанию (а также предотвращая пузырирование события). –

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).is(':checked') вместо $(this).val() и не возвращайте false, так как это предотвратит проверку флажка (если это не то поведение, которое вы хотите).

Смежные вопросы