使用以下代码,我将用户重定向到执行一些操作的php脚本:
requestObject.queries = {
lv : searchQueryLV,
desc : searchQueryDesc,
ru : searchQueryRU,
oth : searchQueryOth
};
var queryStr = $.param(requestObject);
location.replace('http://' + location.host + '/path/to/file.php?' + queryStr);
问题是queryStr可能包含一些html特殊字符,例如标记等。
当包含它们时,我的代码将失败。它以搜索部分看起来像这样的URL结尾:
queryType=search&queries[lv]=<br>&queries[desc]=&queries[ru]=&queries[oth]=
如您所见,我无法对queryString进行编码:
$.param(requestObject);
当我进行console.log记录时,它必须显示。但是,当我将其传递给location.replace()时,情况很糟。我试过使用JS原生encodeURI手动构建它,但这无济于事。
如果您能帮助我,我会很高兴。
最佳答案
在queryStr上的Javascript中使用encodeURIComponent
函数可以转义queryStr中可能存在的URL中不允许的字符。
location.replace('http://' + location.host + '/path/to/file.php?' + encodeURIComponent(queryStr));
有关同一主题的其他信息,请参见this post。