通过jQuery Ajax一起发布Array和Form数据时出现问题

时间:2015-04-04 18:57:34

标签: javascript php jquery arrays ajax

我一直试图将数组和表单数据一起发布,但似乎我收到了JavaScript错误。当我试图发布只有数组数据而不添加表格数据时,它可以正常工作。

我有一个下拉选择框和几个CheckBoxes。我想将SelectBox数据和CheckBox数据一起发布,因此我将CheckBox数据保存到数组中,因为它是一个多选择CheckBox。

在下面的代码中,我需要解决此问题

data: datasel+"&id="+$("#member_id").val(), //Error in this line only. To be Fixed!!

这是完整代码

<script>
$(document).ready(function(){
    $("#err").css('display', 'none', 'important');
     $("#submit_issueBook").click(function(){
         //Creating Array and adding data
        var datasel = { 'selector[]' : []};
        $(":checked").each(function() {
          datasel['selector[]'].push($(this).val());
        });

        $.ajax({
            type: "POST",
            url: "includes/issue_book.php",
            //data: "submit_addMember="+$("#submit_addMember").val(),  <-- Default format for sending post data
            data: datasel+"&id="+$("#member_id").val(),
                if($.trim(html)=='true'){
                    $("#err").addClass("alert alert-success err-inline");
                    $("#err").html("<strong>Member details updated Successfully</strong>");
                    window.location="<?php basename($_SERVER['PHP_SELF']); ?>";
                }
                else{
                    $("#err").addClass("alert alert-danger err-inline");
                    $("#err").html("<img src='images/caution-icon.png' />"+$.trim(html));
                }
           },
           beforeSend:function()
           {
                $("#err").css('display', '-webkit-inline-box', 'important');
                $("#err").addClass("err-inline");
                $("#err").html("<img src='images/loading.gif' /> Loading...")
           }
        });
        return false;
    });
});
</script>

用于捕获此数据的PHP代码是

if( isset( $_POST['selector'] ) )
{   $id=$_POST['id'];
    $data=$_POST['selector'];
    for ( $i=0; $i < count( $data ); $i++ )
    {
        //Some SQL query
    }
}

任何帮助将不胜感激。 谢谢:))

2 个答案:

答案 0 :(得分:1)

您正在将json与数据中的get字符串混合。由于您有datasel对象,只需添加id键和值即可。首先删除那些方括号,它只需要以html形式作为名称:

var datasel = { 'selector' : []};

然后在循环中:

datasel['selector'].push($(this).val());

在循环之后将id键/值对添加到datasel对象:

datasel.id = $("#member_id").val();

然后在ajax中发送这个json就足够了:

data: datasel,

答案 1 :(得分:0)

首先,为什么要将DOM操作代码放入ajax调用设置?试试这段代码:

$.ajax({
    type: "POST",
    url: "includes/issue_book.php",
    //data: "submit_addMember="+$("#submit_addMember").val(),  <-- Default format for sending post data
    data: datasel+"&id="+$("#member_id").val(),
    beforeSend:function()
    {
        $("#err").css('display', '-webkit-inline-box', 'important');
        $("#err").addClass("err-inline");
        $("#err").html("<img src='images/loading.gif' /> Loading...")
    }
});

我在这里做的是删除我之前提到过的代码(所以你应该把它放在你需要的地方),然后将beforeSend放在它所属的ajax设置中:)

跳它会帮助你。