簡體   English   中英

通過超鏈接傳遞到其他頁面的數據正在被切斷

[英]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中使用之前,您需要使用encodeURIComponentencodeURIComponent類別的值。

$('#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM