2012-08-12 2 views
0

쿼리로 표시되는 일부 항목을 색상별로 필터링하는 jQuery가 있습니다.여러 단어로 값을 전달하는 PHP jQuery

"Blue Navy"와 같은 색상 문제가 있습니다. 분명히 jQuery는 두 단어 또는 어떤 것을 전달하지 않습니다. _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); 
+0

에 의해 설명 된 바와 같이'시도 VAR 색상 = $ (이) .val(). toString()에 encodeURI를 사용하는 것입니다. 교체 (' ','- ');' – PitaJ

+0

@PitaJ,'-' 대신'+'이되어서는 안되는가? 또한, .val()은 문자열을 반환한다. – Adi

답변

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 스크립트에서 다시 디코딩 URL이어야합니다.

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

이 귀하의 경우에 작동하지만 더 좋은 방법은 adenneo

관련 문제