一尘不染

GET,PHP中的&符

ajax

我有一个简单的表单,可以生成一个新的相册,将标题和说明发送到MySQL,然后将用户重定向到可以上传照片的页面。

一切正常,直到“&”号进入方程式。信息从jQuery模态对话框发送到PHP页面,然后将条目提交到数据库。Ajax成功完成后,会将用户发送到带有GET
URL的上传页面,以告知该页面它要上传到的专辑-

$.ajax ({
    type: "POST",
    url: "../../includes/forms/add_gallery.php",
    data: $("#addGallery form").serialize(),
    success: function() {
        $("#addGallery").dialog('close');
        window.location.href = 'display_album.php?album=' + title;
    }
});

如果标题带有“&”号,则上传页面上的“标题”字段将无法正确显示。有没有办法逃脱&符的GET?

谢谢


阅读 192

收藏
2020-07-26

共1个答案

一尘不染

通常,当您将不完整的字母数字形式的内容作为URL的一部分传递时,您会希望对其进行URL编码

在URL编码中,&被替换为%26(因为0x26 = 38 =的ASCII码&)。

为此,您可以使用函数encodeURIComponent

$.ajax ({
    type: "POST",
    url: "../../includes/forms/add_gallery.php",
    data: $("#addGallery form").serialize(),
    success: function() {
        $("#addGallery").dialog('close');
        window.location.href = 'display_album.php?album=' + encodeURIComponent(title);
    }
});

请注意,它escape具有+未编码的缺点,并且将在服务器端作为一个空间解码,因此应避免使用它(source)。

如果您希望在PHP级别在服务器端执行此操作,则需要使用函数urlencode

2020-07-26