【问题标题】:Pass checkbox through jquery ajax submit通过jquery ajax提交传递复选框
【发布时间】:2012-10-28 22:50:49
【问题描述】:

问题已解决

我已经搜索了多个信息来源来寻找此类问题。但是没有确切的解决方案。问题是我无法使用 ajax 将复选框值传递给 div id。它一直在父窗口中打开。这是我的代码。

Javascript:

<script type="text/javascript">
$(document).ready(function() {  
    $("#villa_submit").click(function() {   
        var action = $("#villa_choose").attr('action');
//var form_data = { 'vid[]' : []};$("input:checked").each(function() {data['vid[]'].push($(this).val());});
var form_data = $('#villa_choose').serialize();  //suggested by Kev Price 
        $.ajax({
            type: "POST",
            url: action,
            data: form_data,
            beforeSend:function(){
                $('#villa_result').html('<center><img src="/images/loading.gif" alt="Loading..." align="absmiddle"/> loading...</center>');
              },
            success: function(data){
                  $('#test_result').html(data);
            }
        });     
        return false;
    }); 
});
</script>

HTML:

<form name="villa_choose" id="villa_choose" method="post" action="">
<input type="checkbox" name="vid[]" id="vid1" value="1" />
<input type="checkbox" name="vid[]" id="vid2" value="2" />
<input type="checkbox" name="vid[]" id="vid3" value="3" />
<input type="checkbox" name="vid[]" id="vid4" value="4" />
<input type="checkbox" name="vid[]" id="vid5" value="5" />
</form>

<div id="test_result"></div>

【问题讨论】:

  • 您是否尝试过将表单数据作为序列化数组发送?即 var form_data = $('#villa_choose').serialize();
  • @KevPrice,你的建议很有效!谢谢。
  • 很高兴听到它 - 我可能应该将它添加为解决方案而不是评论。可能值得编辑您的原始问题以显示解决方案,以便显而易见

标签: jquery ajax checkbox


【解决方案1】:

var data = $("#villa_choose").serializeArray();

$.ajax({

网址:“process.php”,

类型:“GET”,

数据:数据,

缓存:假,

成功:函数(html){

})

});

【讨论】:

    【解决方案2】:

    一旦你解决了 Madbreaks 建议的问题,你就可以在你的 jquery 中将复选框值放入这样的数组中

    var values = $("input[type='checkbox']:checked").map(function () {
        return this.value;
    }).get();
    

    values will be an array that you can pass with ajax like this

    var data = 'checkbox="'+values+'"';
    $.ajax({
        url: "process.php",
        type: "GET",
        data: data,
        cache: false,
        success: function (html) {
            ... // change html on return
        }
    });

    希望有帮助

    【讨论】:

    • 感谢您的尝试。我找到了解决方案。 :)
    【解决方案3】:

    您有多个具有相同id 属性的&lt;input&gt; 元素。这是不允许的,id 在文档中必须是唯一的。修复它,然后重试。

    【讨论】:

    • 反对者,请说明您这样做的原因。
    猜你喜欢
    • 2017-04-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多