防止在表单提交时编码加号

时间:2015-10-29 05:57:59

标签: javascript html angularjs forms

所以,我的网站上有一个GET提交到第三方网站的搜索表单。其中一个输入值是细分名称,第三方要求它是带有+符号的细分名称。所以,我的价值是被解析并用+'替换空格,但是,在提交时,值被浏览器urlencoded并且反过来不被第三方解析..我的第一个想法是他们是通过不解码他们的价值来完成他们的工作...但在我开始处理他们的客户支持的痛苦过程之前,我宁愿先在这里查看,看看是否有办法可以解决它。

编辑:这是我的代码(网址已删除)

<form action="IDXBroker" method="GET">
    <h2>IDX Quick Search</h2>
    <div class="element">
        <label for="pt">Property Type</label>
        <select name="pt" id="pt">
            <option value="all">All</option>
            <option value="1" selected="selected">Residential</option>
            <option value="2">Commercial</option>
            <option value="3">Lots and Land</option>
            <option value="4">Rental</option>
            <option value="5">Multi-Family</option>
        </select>
    </div>
    <div class="element" ng-controller="searchCtrl" class="city-search">
        <label for="city">City/Subdivision</label>
        <input type="text" ng-model="searchTerm" ng-change="setShowResults()"/>
        <ul class="city-results" ng-show="showResults && searchTerm.length >= 3">
            <li ng-repeat="item in results | stringSearch:searchTerm"><a href="#" ng-click="selectCity(item)">{{item.data}}</a></li>
            <li ng-show="(results | stringSearch:searchTerm).length === 0 && searchTerm.length >= 3">No Results Found</li>
        </ul>
        <input type="hidden" name="{{searchType}}" value="{{searchTermValue.split(' ').join('+')}}" />
    </div>
    <div class="element">
        <label for="lp">Min Price</label>
        <input id="lp" name="lp" type="number" value="200000" />
    </div>
    <div class="element">
        <label for="hp">Max Price</label>
        <input id="hp" name="hp" type="number" />
    </div>
    <div class="element">
        <label for="bd">Min Bedrooms</label>
        <input id="bd" name="bd" type="text" />
    </div>
    <div class="element">
        <label for="tb">Max Bedrooms</label>
        <input name="tb" type="text" />
    </div>
    <input type="hidden" name="srt" value="newest" />
    <div class="buttons">
        <input type="submit" value="Search Now" />
    </div>
</form>

1 个答案:

答案 0 :(得分:0)

不确定您是否可以强制浏览器不对加号进行编码。作为一种解决方法,您可以使用js重新加载窗口。像

这样的东西
var id1value = document.getElementById('hp').value;
var id2value = document.getElementById('lp').value;
//repeat for all your inputs to build your string

var q = 'hp=' + id1value + '&lp=' + id2value;

window.location = 'http://IDXBrokerURL?' + q;`

在提交中添加一个onclick来运行你的js函数。然后根本没有编码。

我会将此编码问题提交给他们的开发人员支持。