通过POST传递"&"

Sta*_*tan 0 php ajax jquery

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

Arn*_*anc 6

你必须编码/逃避它们.

在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会为你逃避一切.