我有一个简单的表单,可以生成一个新的相册,将标题和说明发送到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?
谢谢
通常,当您将不完整的字母数字形式的内容作为URL的一部分传递时,您会希望对其进行URL编码。
在URL编码中,&被替换为%26(因为0x26 = 38 =的ASCII码&)。
&
%26
为此,您可以使用函数encodeURIComponent:
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)。
escape
+
如果您希望在PHP级别在服务器端执行此操作,则需要使用函数urlencode。
urlencode