2015-04-04 71 views
1

我一直试图将数组和表单数据一起发布,但看起来像我得到的JavaScript错误。当我试图发布只有数组数据而不添加表单数据时,它工作正常。

我有一个下拉选择框和几个CheckBoxes。我想将SelectBox数据和CheckBox数据一起发布,因此我将CheckBox数据保存到数组中,因为它是一个多选Select CheckBox。通过jQuery Ajax发布数组和表单数据时发生的问题

在下面的代码,我需要这方面的

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 
    } 
} 

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

回答

1

你正在混合json和获取数据中的字符串。由于您拥有数据集对象,只需将ID键和值添加到它。第一丢弃这些方括号中,它仅需要在HTML形式为名称:

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

然后在循环:

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

循环后添加ID的键/值对来datasel对象:

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

然后在阿贾克斯就足以让这个JSON:

data: datasel, 
+0

感谢兄弟工作。但是有一个问题我检查了POST数据,看起来它在这里发布了一个额外的选择 选择器“%”5B“%”5D = 2&选择器“%”5B“%”5D = 1&选择器“%”5B“%”5D = 2&id = 2 第一个选择符= 2的人会自动添加不知道如何。我甚至检查过这个html,没有这个问题。那么为什么它发布两次选择器= 2 – 2015-04-04 19:26:31

+0

我不知道,看起来像你有两个“2”s检查。仔细检查你的表单输入设置。 – 2015-04-04 19:41:30

+1

谢谢曼我已经找到了问题替换$(“:checked”)$(“#selection:checked”) – 2015-04-04 20:02:11

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它所属:)

阿贾克斯里面设置跳它会帮助你。