2 を含むフォームがあり<select>
、最初の選択はページの読み込み時に自動的に入力され、2 番目の選択は最初の選択で選択された選択に基づいて入力されます。
これを達成するために、選択の状態が変化するたびに、最初に選択された値が別のページに渡され、そこで2番目の値を入力するために使用されます<select>
問題
URL を介して渡される選択された値 (この場合は Food & Beverages) が途中で切れているため、不完全な文字列が 2 番目の処理ページに送信され、実行できなくなります。
問題を特定するために実行した手順 URL を介して渡された値をエコーし、「Food」のみを取得し、残りの文字列を切り捨てました。文字列の値をFood and Beverageに置き換えてみましたが、すべてが完全に機能し、コンピューターが文字列の一部を処理する原因となるアンパサンド(&)記号が原因で文字列が切断されていると結論付けましたURLを介して渡される別の値としてアンパサンドの後に.ただし、変数に割り当てていないため、渡されていません。
質問
切り落とさずに値を渡す方法はありますか?
コードの抜粋:
処理ページ
<?PHP
include("cxn.inc");
$query=$cxn->prepare("SELECT * FROM `BusinessSubCategory` WHERE `BusinessCategory`=:businesscategory");
$query->bindValue(":businesscategory",$_GET['category']);
$query->execute();
$count=$query->rowCount();
if($count>0)
{
echo"<option id='subcategory' value=''>Please select a SubCategory</option>";
while($result=$query->fetch(PDO::FETCH_ASSOC))
{
$subcategory=$result['BusinessSubCategory'];
echo"<option id=$subcategory value=$subcategory >$subcategory</option>";
}
}
else
{
echo"<option id='subcategory' value=''>Error,fetch query not run. </option>";
}
?>
JQuery コード
$(document).ready(function(){
$('#BusinessCreateCategory').load('getbusinesscategory.php');
$('#BusinessCreateCategory').change(function(){
var category=$('#BusinessCreateCategory').val();
window.location.href='getbusinesssubcategory.php?category='+category;
});
EDIT:encodeURIComponentを試しましたが、処理apgeのURLからわかるように、データはエンコードされていません。アンパサンドで切り取られています.HOWEVER、URLを文字列として手動で入力し、 $('#BusinessCreateCategory').val(); をエンコードできない理由を誰でも明らかにすることができます。? ありがとう!
例:これは機能します
var category="Food & Beverages";
var encoded =encodeURIComponent(category);
window.location.href='getbusinesssubcategory.php?category='+encoded;
たとえば、これはしません
var category=$('#BusinessCreateCategory').val();
var encoded= encodeURIComponent(category);
window.location.href='getbusinesssubcategory.php?category='+encoded;
それが役立つ場合、URLを通過しようとしているデータはデータベースから取得されます。