[英]jQuery: td content with single quotes gets cut off when being passed to modal
[英]Data passed to other pages via hyperlink is being cut off
我有一個包含2 <select>
的表單,第一個選擇在頁面加載時自動填充自己,而第二個選擇根據在第一個選擇中選擇的選項填充自己。
要做到這一點,每當select的狀態發生變化時,第一個中的選定值將被傳遞到一個單獨的頁面,在那里它用於填充第二個<select>
問題
通過url傳遞的選定值(在這種情況下為Food&Beverages)被中途切斷,導致不完整的字符串被發送到第二個處理頁面,這導致它無法運行。
確定問題的步驟我已經回應了通過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;
});
編輯:嘗試encodeURIComponent,但數據沒有被編碼,因為我可以從處理apge的url看到它在ampersand.HOWEVER被切斷,如果我手動輸入url作為字符串然后使用它編碼encodeURIComponent,它工作得非常好。任何人都可以解釋為什么我無法編碼$('#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中使用之前,您需要使用encodeURIComponent
來encodeURIComponent
類別的值。
$('#BusinessCreateCategory').change(function(){
var category=$('#BusinessCreateCategory').val();
var encoded = encodeURIComponent(category);
window.location.href='getbusinesssubcategory.php?category='+encoded;
});
Ampersand是一個特殊字符,它會偽裝您要傳遞的URL。 對值進行編碼應該允許您將其視為單個值。
瀏覽器限制可以通過的字符數。 你有一個你試圖傳遞的完整字符串的例子嗎? 我最初懷疑這可能是一個編碼問題。
encodeURIComponent,用於對要傳遞的字符串進行編碼。
該值應該被編碼,但是當您查詢數據庫時,它可能會查找完全匹配,如果您未能通過編碼字符串看到任何輸出,請使用decodeURIComponent在將字符串傳遞給db之前對其進行解碼。 在正式放置代碼之前檢查phymyadmin的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.