string.search()抛出一个javascript错误'对象不支持属性或方法搜索'

时间:2014-09-01 01:04:28

标签: javascript

我搜索了所有其他相关问题,但没有更聪明。

我在重新加载表单时使用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教程中。

请提出任何想法

2 个答案:

答案 0 :(得分:3)

您需要通过调用encodeURIComponent来转义网址组件:

var params = 'supps=' + encodeURIComponent(supps);

答案 1 :(得分:1)

您正在使用GET,因此&符号表示属性的结束。所以“Fitch”被解释为新属性的名称,它没有任何价值。运行params = encodeURIComponent(params)以转义所有特定于URI的字符。