使用ajax post请求发送两个数组

时间:2012-06-08 09:59:32

标签: php jquery mysql ajax

我正在使用ajax / jquery和php / mysql处理过滤器功能。我有两组复选框 1)=>对于区域2)=>对于Localities 。过滤器类似于here。我想发送两个复选框的值来过滤记录。本地过滤器将在选择区域复选框时进行本地过滤。我已经让它在某种程度上起作用了 这是在第一组复选框上调用的。

HTML

<div class="locality">
                <input type="checkbox" id="checkbox1" class="checkbox1" value="<?php echo $suburb['suburb_name']?>" name="Suburb_check[]" onClick="changeResults();" onChange="" ><?php echo $suburb['suburb_name']?>  <span class="grey">(<?php echo $suburb['total']?>)</span>
            </div>
            <?php }?>

使用Javascript / Jquery的

function changeResults(){
    var data = { 'venue[]' : []};
        $("input:checked").each(function() {
            var chck1 = $(this).val();
            //alert(chck1);

                data['venue[]'].push($(this).val());

        });

    $.ajax({
     type : 'POST',
     url : 'process.php',
     data : data,
     success : function(data){


          $('#project_section').html(data); // replace the contents coming from php file

            }  
        });

   $.ajax({
     type : 'POST',
     url : 'loadLocality.php',
     data : data,

     success : function(data){
     document.getElementById("searchLoader").style.display = 'block';
              $('#localityList').html(data); // replace the contents coming from php file
        //   alert(data);
     document.getElementById("searchLoader").style.display = 'none'; 
            }  
        });  

    }

这是具有Localities

的第二组chck框
<div class="locality" id="localities">
            <input type="checkbox" onClick="changeLocality();" id="1" value="<?php echo $locality['locality_name'];?>" name="Locality_check[]"><?php echo $locality['locality_name'];?> <span class="grey">(<?php echo $locality['total'];?>)</span>
        </div>

我调用了一个与上面类似的功能,并将其发布到不同的页面。 这是第二个chck框函数:

function changeLocality(){
    var dataLocality = {'locality[]' : []};
        $("input:checked").each(function() {
            var chcklocal = $(this).val();
            //alert(chcklocal);
            dataLocality['locality[]'].push($(this).val());
        });

 $.ajax({
 type : 'POST',
 url : 'processLocality.php',
 data : dataLocality,
 success : function(dataLocality){
    // document.getElementById("newloader").style.display ="block";
          $('#project_section').html(dataLocality);        // replace the contents coming from php file
          //alert('data');
   // document.getElementById("newloader").style.display ="none";

        }  
    });

}

但是,当我选择区域框然后选择一个位置框然后取消选择该区域时,我还会在区域数组中获得之前的 locality 值(数组的名称是场地)我只想要在场地数组和区域+位置数组中的区域中进行区域。实际上,如果我取消选择区域后续的位置值也应该从数组中删除。尽管如此,虽然我将它们发布到不同的页面,但是区域页面保存了地点值。我被困在了JQUERY知识中。 通过帖子,但无法修复它。任何帮助将不胜感激。

修改 当我检查第一组chck框时,我得到一个数组,并使用上述函数过滤记录。

Array
 (
    [venue] => Array
    (
        [0] => Pune East
        [1] => Pune West
        [2] => Pune North
        [3] => Pune South
    )

如果我现在点击任何第二组chck框,我会得到一个这样的数组。

 Array
 (
  [locality] => Array
    (
        [0] => Pune East
        [1] => Pune West        //[0] and [1] are regions
        [2] => Aundh
        [3] => Kalyaninagar     //[2] and [3] are localities
    )

注意:一个区域可以有多个地方。但我希望它们都是不同的数组,因为它们是SQL查询的两个不同参数,用于过滤数据。 希望我现在足够清楚了!
我的方法是RiGHT ??还是可以更简单的方式完成?
感谢

3 个答案:

答案 0 :(得分:2)

使用.选择对象的内容,以便

data['venue[]'].push($(this).val());

应该是:

data.venue[].push($(this).val());

答案 1 :(得分:2)

尝试更改

 $("input:checked").each(function() {

$("checkbox[name=check_box_name]:checked").each(function() {

为两者改变这一点,我希望这会起作用

答案 2 :(得分:1)

现在我认为这是一个愚蠢的错误!! :P 问题出在复选框的名称上。在Javascript中,我们不能在复选框的名称中使用venue[]括号[]。我认为它类似于PHP来发布数组。 经过一番阅读和搜索后了解到!!!问题解决了 感谢那些回答。