在GET中的&符号,PHP

Nig*_*ICU 6 html php ajax jquery get

我有一个简单的表单,生成一个新的照片库,将标题和描述发送给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;
    }
});
Run Code Online (Sandbox Code Playgroud)

如果标题有&符号,则上传页面上的标题字段无法正确显示.有没有办法逃脱Gers的&符号?

谢谢

Seb*_*olm 13

一般情况下,当您将其作为网址的一部分传递时,您需要任何非完全字母数字的内容进行网址编码.

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

要在Javascript中执行此操作,您可以使用以下函数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);
    }
});
Run Code Online (Sandbox Code Playgroud)

注意,它escape具有+未编码的缺点,并且将作为空间在服务器端解码,因此应该避免().

如果您希望在PHP级别执行此服务器端,则需要使用该功能urlencode.