0

クエリに表示されるいくつかのアイテムを色でフィルタリングするjQueryがあります。

問題は「ブルーネイビー」などの色にあります。どうやらjQueryは2つの単語か何かを渡しません。値の結果をエコーすると_GET、2ワードの色が渡されても何も取得されませんが、1ワードの色の値は取得されます。

なぜこれが起こるのかについて何か考えはありますか?

これが私のコードです:

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);
4

2 に答える 2

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);​

スーパーグローバルは、$_GETPHPスクリプトで自動的にURLデコードされます。

于 2012-08-12T16:49:40.877 に答える
0
var color = $(this).val().replace(/ /g, '+');

これはあなたのケースでは機能しますが、adenneoによって説明されているようにencodeURIを使用するのがより良い方法です

于 2012-08-12T16:53:39.053 に答える