javascript - 通过超链接传递到其他页面的数据被切断

标签 javascript php jquery html

我有一个包含 2 <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中看到它在&符号处被切断。但是,如果我要手动输入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编码。

$('#BusinessCreateCategory').change(function(){

    var category=$('#BusinessCreateCategory').val();
    var encoded = encodeURIComponent(category);
    window.location.href='getbusinesssubcategory.php?category='+encoded;

});

& 符号是一个特殊字符,它会混淆您尝试传递的 URL。对值进行编码应该允许您将其视为单个值。

关于javascript - 通过超链接传递到其他页面的数据被切断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664891/

相关文章:

javascript - 等待事件被处理以继续执行触发事件的函数。

javascript - 将其传递给函数会更改所有单击的元素

jquery - 如何选择在 jQuery 中设置了 src 的图像?

javascript - 在非 unicode 网站上使用 JQuery AJAX

javascript - For 循环中断 IndexOf

javascript - 预输入搜索中出现重复记录

php - 如何将这些数据添加到我的临时表中?

php - 表单向数据库插入空数据

javascript - 来自 2 个 MySQL 查询的数组用于使用 javascript 的 2 个选择

javascript - 使用 Javascript 检测取消的表单帖子