通过POST传递“&”
我传递变量以通过AJAX提交文件,但当传递包含“&”字符的变量时遇到问题。我知道为什么,因为它弄乱了字符串,如id = 1 & name = blabla & something = q & a。通过POST传递“&”
但我该如何使它工作?
有人想代码,这里是
$("#btnCatEditSubmit").click(function()
{
$.ajax(
{
type: "POST",
url: "catEditSubmit.php",
data: "catID=<?= $catID ?>" + "&catName=<?= $catName ?>",
success: function(data)
{
alert(data);
}
});
});
catName可能是“东西&东西”,然后我有问题。
你必须编码/转义它们。
在PHP中,你可以做到这一点与urlencode()
功能:
$string = urlencode($string);
因此,在你的代码,这样做:
data: "catID=<?= urlencode($catID) ?>" + "&catName=<?= urlencode($catName) ?>",
甚至更好:
data: <?=json_encode(array('catID' => $catID, 'catName' => $catName))?>,
( jQuery允许你直接传递键值对的哈希,所以jQuery可以为你转义。以JavaScript可理解的方式格式化数组)。
在JavaScript中,你可以做一个使用encodeURIComponent()函数:
var escaped_string = encodeURIComponent(str);
但是当你正在使用jQuery,你也可以直接用哈希传递变量。
而是这样做:
$.ajax({
data: "a=b&c=d",
...
});
这样做:
$.ajax({
data: {a: "b", c: "d"},
...
});
和jQuery将难逃你的一切。
谢谢,解决了我的问题。 – sed 2011-02-02 18:13:56
您需要对您的&
进行网址编码。代码是%26
。
您需要转义&
字符,因为它在URL中有特殊的含义。您可以使用原生功能encodeURIComponent
,做到这一点,或者因为你是使用jQuery使用$.param
helper方法:
var querystring = $.param({
id: 1,
name: 'blablah',
something: 'q&a'
});
您需要使用%26逃离“&”字
请出示一些代码 – 2011-02-02 18:06:23
你需要使用PHP还是JavaScript? – 2011-02-02 18:08:14