添加#和!到URL以及提交的搜索表单中的文本

时间:2018-04-02 18:52:03

标签: javascript php html forms get

我需要从搜索中添加到网址的已提交文字。我在这里找到了一些代码Add text to parameter before sumbit form,这部分有效,但我需要添加的一些文字包括#!和?当添加到网址时,转化为%23%21和%3F。

堆栈溢出代码(最佳答案):

<form action="http://example.com/search" method="get" onsubmit="return addText();">
        <input type="text" name="q" id="q">
        <input type="submit">
    </form>

    <script>
    function addText(){
        document.getElementById("q").value += " BBBB CCCC"; // Whatever your value is
        return true;
    }
    </script>

我的网址需要返回以下内容:

http://example.com/?search=TEXT#!summaryList?skipMake=true&skipModel=true

TEXT的URL到达(TEXT是从表单提交的q值),但是#!在总结和?在跳过之前没有,并且URL需要整个字符串才能正常运行。

是否有一种简单的方法可以使用上面的代码使其工作,或者我最好找到PHP脚本?

谢谢!

2 个答案:

答案 0 :(得分:0)

使用encodeURIComponent()对您的网址进行编码(格式为#):

encodeURIComponent(myUrl)

使用decodeURIComponent()解码您的网址:

decodeURIComponent(myUrl)

var myUrl = 'search=TEXT#!summaryList?skipMake=true&skipModel=true';
    
console.log('Encode URL', encodeURIComponent(myUrl));
console.log('Decode URL', decodeURIComponent(myUrl));

答案 1 :(得分:0)

#之后的任何内容都没有发送到服务器。如果您需要将其发送到服务器,则需要将其放入其自己的参数中(我使用extra作为名称)。然后,您还需要确保它已正确编码,否则它也可以将该数据作为键/值发送。

http://example.com/?search=TEXT&extra=summaryList%3FskipMake%3Dtrue%26skipModel%3Dtrue

在服务器端,您需要decode it,并获取键/值对