PHP jQuery传递多个单词的值

时间:2012-08-12 16:39:18

标签: php javascript jquery

我有一个jQuery,可以按颜色过滤查询中显示的一些项目。

问题来自于“蓝色海军”等颜色。显然jQuery没有传递这两个词或什么。当我回显_GET值的结果时,当我传递一个2字的颜色时,我什么也得不到,而我确实得到了单字颜色的值。

知道为什么会这样吗?

以下是我的代码:

jQuery(document).ready(function($) {
    $("input:checkbox").change(function() {
        if($(this).is(':checked')) 
            {
        $(".loadingItems").fadeIn(300); //fade in on change
        var color = $(this).val();
            $(".indexMain").load('indexMain.php?color='+color,function(){
            $(".indexMain").fadeIn(slow);

            })
            $(".loadingItems").fadeOut(300); //remove when load is complete
        }
        else 
            {
            $(".loadingItems").fadeIn(300); //fade in on change
$(".indexMain").load('indexMain.php');
                        $(".loadingItems").fadeOut(300); //remove when load is complete
            }
        });
    });

$color = $_GET['color'];

$items = $con -> prepare("SELECT * FROM item_descr WHERE color_base1 = :colorbase1");
        $items -> bindValue(":colorbase1", $color);

2 个答案:

答案 0 :(得分:3)

由于它是一个GET请求,该值将附加到查询字符串,并且查询字符串不能包含常规空格。

在查询字符串中使用之前,您需要对值进行url编码:

$(function() {
    $("input[type='checkbox']").on('change', function() {
        if (this.checked) {
            $(".loadingItems").fadeIn(300);
            var color = encodeURI(this.value);
            $(".indexMain").load('indexMain.php?color=' + color, function() {
                $(".indexMain").fadeIn(slow);
                $(".loadingItems").fadeOut(300);
            });
        } else {
            $(".loadingItems").fadeIn(300);
            $(".indexMain").load('indexMain.php', function() {
                $(".loadingItems").fadeOut(300);
            });
        }
    });
});

$color = $_GET['color'];

$items = $con - > prepare("SELECT * FROM item_descr WHERE color_base1 = :colorbase1");
$items - > bindValue(":colorbase1", $color);​

$_GET超全局应该在PHP脚本中自动解码回来。

答案 1 :(得分:0)

var color = $(this).val().replace(/ /g, '+');

这适用于您的情况,但更好的方法是使用encodeURI,如adenneo所述