1

我用了这个分页脚本,想用jq的ajax请求实现选项过滤,当用户触发数据时,数据会用选定的值过滤,页面第all一次加载时默认加载数据。

我试图传递txt_filter给 ajax 的参数对象,该对象已准备好发送给 PHP 以处理数据,但是当我选择过滤选项时,下面的脚本不起作用。

当用户选择它时,如何将txt_filter其传递给函数 loadData?

// Filtering Options

<form id="formfilter" method="post" enctype="multipart/form-data">
   <div style="padding-bottom:6px;">
       Genre:<br />
       <select id="filterGenre">
        <option value="all" selected="selected">All</option>
        <option value='1'>Education</option>
        <option value='2'>Entertainment</option>
        <option value='3'>Documentary</option>
       </select>
   </div>
</form>


// Get filtering value stored in variable
var txt_filter;
$("#filterGenre").change(function(){
    txt_filter = $('#filterGenre').val();
    //alert(txt_filter);
});


// Pass filtering value to filterGenre
function loadData(page){
    $.ajax({
        type: "POST",
        url: "ajax_network_programs.php",
        data: { page: page, filterGenre: txt_filter },
        success: function(msg){
            $("#inner-main_content3").ajaxComplete(function(event, request, settings){
                $("#inner-main_content3").html(msg);
            });
        }
    });
}
loadData(1);  // For first time page load default results
  .
  .
  .
//blah blah codes not relevant...

谢谢。

4

2 回答 2

1

这个答案假设您的 PHP 脚本已经设置为处理 filterGenre。如果你还没有这样做,那么它当然不会工作......你需要在后端有一个 SQL 查询来检查 $_POST['filterGenre'],并应用相关的查询。

无论如何..假设您已经这样做了,并且知道我在说什么..然后按照以下步骤进行..

只需将您的 loadData 函数更改为采用两个参数...一个页面和一个过滤器参数...

function loadData(page, filter){
$.ajax({
    type: "POST",
    url: "ajax_network_programs.php",
    data: { 'page': page, 'filterGenre': filter },
    success: function(msg){
        $("#inner-main_content3").ajaxComplete(function(event, request, settings){
            $("#inner-main_content3").html(msg);
        });
    }
});

}

然后在 onchange 处理程序中运行该函数...

$("#filterGenre").change(function(){
var txt_filter = $('#filterGenre').val();
loadData(1,txt_filter);
});

然后更新页面底部的功能,页面第一次加载......

  loadData(1,1);

现在我假设当他们单击分页按钮时,您希望使用当前应用的任何选择过滤器来运行此功能......以便用户可以使用过滤器对结果进行分页......基于您的代码的链接......只是做这个...

  $('#container .pagination li.active').live('click',function(){
  var page = $(this).attr('p');
  var txt_filter = $('#filterGenre').val();
    loadData(page, txt_filter);
  }); 

编辑

第一次加载页面时,您需要指定所有记录...所以根据您告诉我的有关您的 php 页面的内容...这应该可以工作..

loadData(1,all);
于 2013-06-10T03:08:49.383 回答
0

根据我的要求,我需要向我的后端提交一个选择选项,以将所选选项存储在组合框中,以便通过我使用 jquery 如下

<HTML>
<HEAD>
<script>
$(document).ready(function(){
$("#submid").click(function() { // loginForm is submitted
var conceptName = $('#sel_opt').find(":selected").val();// to send the selected combo box option 
$('#sel_opt').attr('name',conceptName);//passing option value to form combobox 
$.ajax({

url: "urls", 
data:{
"sel_opt":$("#sel_opt").attr("name"),
},

}); // ajax

});//click
});


</script>

</HEAD>

<BODY>
<select id="sel_opt" name="">    
<option>1</option>   
<option>2<option>   
<option>3</option>  
</select>



</BODY>
</HTML>
于 2013-11-22T14:07:00.283 回答