easyui-datagrid 过滤器功能发送的参数在discuz端的接收与使用


    网页:easyUI DataGrid

    服务器:discuzX 3.3

    浏览器页面,使用类似这种easyui datagrid页面:http://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&theme=default&dir=ltr&pitem=Remote%20Filtering%20on%20DataGrid


    使用时,网页发送的过滤查询参数格式为:



    服务器端接收到filterRules参数,循环处理生成查询sql:

	//根据过滤条件,返回json格式数据
	public function fetch_j_filter($start, $limit, $filter) {

		$sql_b = "";
		foreach($filter as $key=>$data){  
			$sql_b = $sql_b." and ".$data['field']." like '%".$data['value']."%' ";
		}

		$sql = 'SELECT * FROM tb_name where 1=1 '.$sql_b.' ORDER BY id DESC'.DB::limit($start, $limit);
		$query = DB::query($sql);

		$result = array();
		
		// 记录数量
		$row = DB::fetch_first('SELECT count(*) as cnt FROM tb_name where 1=1 '.$sql_b);
		$result["total"] = intval($row['cnt']);

		while($data = DB::fetch($query)){
			$list[] = array(  
			      'SF' => urlencode($data['SF']),
			      'FR' => urlencode($data['FR'])

			);
		}  
		$result["rows"] = $list;
  
		return urldecode(json_encode($result));  
	}

若移动端向服务器端发送的过滤参数包含中文,貌似foreach循环过程会出现问题,但用微机则不会。经反复尝试,采用以下方式可正确处理移动端提交过滤参数中包含的中文值:

	$filter = iconv("gbk", "utf-8", $filter);
	$filter = json_decode($filter, true); // 
	
	$sql_b = "";
        foreach($filter as $key=>$data){
			$sql_b = $sql_b." and ".$data['field']." like '%".iconv("utf-8", "gbk", $data['value'])."%' ";
        }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值