我通过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);
}
});
});
catName可能是“Something&amp; Something”然后我有问题。
答案 0 :(得分:6)
你必须编码/逃避它们。
在PHP中,您可以使用urlencode()
函数执行此操作:
$string = urlencode($string);
所以在你的代码中,做到这一点:
data: "catID=<?= urlencode($catID) ?>" + "&catName=<?= urlencode($catName) ?>",
甚至更好:
data: <?=json_encode(array('catID' => $catID, 'catName' => $catName))?>,
(jQuery允许你直接传递一个键值对的哈希,所以jQuery可以为你处理转义。这里json_encode
以javascript可以理解的方式格式化你的数组。)
在javascript中,您可以使用encodeURIComponent()函数执行此操作:
var escaped_string = encodeURIComponent(str);
但是当你使用jQuery时,你也可以直接用哈希传递变量。
而不是这样做:
$.ajax({
data: "a=b&c=d",
...
});
这样做:
$.ajax({
data: {a: "b", c: "d"},
...
});
jQuery会为你逃避一切。
答案 1 :(得分:2)
你需要逃避“&amp;”字符使用%26
答案 2 :(得分:1)
使用PHP的urlencode()函数使您的参数值具有URL安全性。
答案 3 :(得分:1)
您需要对&
进行网址编码。代码为%26
。
答案 4 :(得分:0)
您需要转义&
字符,因为它在网址中具有特殊含义。您可以使用本机函数encodeURIComponent
执行此操作,或者,因为您使用的是jQuery,所以使用$.param
帮助程序方法:
var querystring = $.param({
id: 1,
name: 'blablah',
something: 'q&a'
});