我搜索了所有其他相关问题,但没有更聪明。
我在重新加载表单时使用javascript来捕获表单数据,这样我就可以在php中读取$ _GET中的数据了。
除非有'&',否则它可以正常工作在一个字符串中。我的评论代码:
oSupps = form.elements["supps[]"];
//a multi-choice select element
var supps = getSelectedOptions(oSupps);
//returns a comma-separated list of selected items; this includes the correct string with
the ampersand
var params='supps='+supps;
//sets up the string to be returned to the page in the next line of code
self.location='instructor_register_2.inc?' + params;
url显示带有&符号的正确字符串,但$ _GET将字符串拆分为2行并丢失&符号。
一个例子:
string is "Abercrombie & Fitch"
$_GET is:
supps "Abercrombie"
Fitch ""
我尝试检查字符串中的&符号并使用以下命令将其转义为:
needle=/&/
pos=supps.search(needle)
if(pos!=-1)
{
newsupps=supps.replace(" & "," /& ");
supps=newsupps;
}
但它不会超过supps.search说'对象不支持属性或方法搜索'。
我正在使用PhpED 8.1版中的内置浏览器。
我找不到任何特定浏览器不支持的搜索引用(也可能替换),它们都包含在我能找到的所有基本javascript教程中。
请提出任何想法
答案 0 :(得分:3)
您需要通过调用encodeURIComponent
来转义网址组件:
var params = 'supps=' + encodeURIComponent(supps);
答案 1 :(得分:1)
您正在使用GET,因此&符号表示属性的结束。所以“Fitch”被解释为新属性的名称,它没有任何价值。运行params = encodeURIComponent(params)
以转义所有特定于URI的字符。