0

我正在通过 AJAX 将一些数据发送到 PHP 文件。这是关于过滤器选项的。无论如何,我是这样发送的:

filter[0][data][type]   string
filter[0][data][value] automobiles
filter[0][field] product

filter[1][data][type] numeric
filter[1][data][value] 6000
filter[1][field] price

以上内容取自 FireBug 控制台。然后,在 PHP 中:

$filter = $_POST['filter'.$i];
if (is_array($filter)) {
    for ($i=0;$i<count($filter);$i++){
        switch($filter[$i]['data']['type']){
            case 'string' : 
                        // I'm doing my select from database based on that and so on

所以,这个翻译将是:“从数据库中获取所有记录:嗯,让我们检查过滤器......我得到第一个过滤器类型,它是需要应用于 mysql 的“字符串”名为“产品”的列...所以我正在那里搜索“汽车”的值...但是我还没有完成,第二个过滤器是指数据库中“价格”列的数字过滤器。所以我正在获取它的值并将其添加到查询中。所以我最终会选择所有价格大于 6000 的汽车。

到现在为止还挺好。问题是我获取数据的方式已经改变,我不能再以这种格式发送我的数据了。新格式是一个如下所示的 URL:

filter[0][field]=prodct&filter[0][data][type]=string&filter[0][data][value]=automobiles&filter[1][field]=price&filter[1][data][type]=numeric&filter[1][data][value]=6000

我可以通过“&”对此进行爆炸并最终得到一个数组......我可以做很多......问题是我不知道如何调整我的查询构建脚本以使用它一种接收到的数据..这样我就可以再次执行“switch($filter[$i]['data']['type']){”...

修改代码的任何想法?

谢谢!

4

2 回答 2

2

parse_str ($queryString); 然后一切正常。该方法将处理查询字符串并将变量导入全局命名空间(这可能很危险),因此可以使用它的第二种形式(在手册页上列出):

$result = array();
parse_str($queryString, $result)
$filters = $result['filter'];

foreach($filters as $filter) {
// your code
}
于 2009-01-29T04:28:08.533 回答
0

我会将数据作为 JSON 对象发送过来,然后在 php 上将其转换回一个数组,就像您之前使用的那样。

在 php 中,您可以使用 json_decode 将 JSON 数据返回到数组中,并且您可以像以前一样继续使用其余代码。

于 2009-01-29T04:22:33.723 回答