我通过AJAX传递变量来提交文件,但是当我传递包含"&"字符的变量时,我遇到了问题.我知道为什么,因为它弄乱了字符串,如id = 1&name = blabla&something = q&a.
但是我怎样才能让它发挥作用呢?
有人想要代码,就在这里
$("#btnCatEditSubmit").click(function()
{
$.ajax(
{
type: "POST",
url: "catEditSubmit.php",
data: "catID=<?= $catID ?>" + "&catName=<?= $catName ?>",
success: function(data)
{
alert(data);
}
});
});
Run Code Online (Sandbox Code Playgroud)
catName可能是"Something&Something"然后我有问题.
你必须编码/逃避它们.
在PHP中,您可以使用以下urlencode()函数执行此操作:
$string = urlencode($string);
Run Code Online (Sandbox Code Playgroud)
所以在你的代码中,做到这一点:
data: "catID=<?= urlencode($catID) ?>" + "&catName=<?= urlencode($catName) ?>",
Run Code Online (Sandbox Code Playgroud)
甚至更好:
data: <?=json_encode(array('catID' => $catID, 'catName' => $catName))?>,
Run Code Online (Sandbox Code Playgroud)
(jQuery允许你直接传递一个键值对的哈希,所以jQuery可以为你提供转义.这里json_encode以javascript可以理解的方式格式化你的数组).
在javascript中,您可以使用encodeURIComponent()函数执行此操作:
var escaped_string = encodeURIComponent(str);
Run Code Online (Sandbox Code Playgroud)
但是当你使用jQuery时,你也可以直接用哈希传递变量.
而是这样做:
$.ajax({
data: "a=b&c=d",
...
});
Run Code Online (Sandbox Code Playgroud)
做这个:
$.ajax({
data: {a: "b", c: "d"},
...
});
Run Code Online (Sandbox Code Playgroud)
jQuery会为你逃避一切.