通过“&”通过邮寄

时间:2011-02-02 18:05:08

标签: php jquery ajax

我通过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”然后我有问题。

5 个答案:

答案 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'
});