网站A:开发中(PHP) 网站B:http://www.apprenticesearch.com/
我想在网站A上加一个输入框;在我输入查询并按Enter后,打开一个新选项卡以显示B的搜索结果。就好像我直接在B中键入搜索查询一样。
例如,我搜索了'测试',并检查了B的搜索结果,我看到以下内容。我如何将查询从站点A传递给B?
<div id="search">
<form action="/Resources/SiteSearch" id="siteSearchForm" method="post">
<label for="search-box">
SEARCH</label>
<div id="search-box-wrapper">
<input type="text" id="search-box">
</div>
<input id="searchText" name="searchText" type="hidden" value="testing"><input id="siteSearchUrl" name="siteSearchUrl" type="hidden" value="http://yboss.yahooapis.com/ysearch/limitedweb?format=xml&sites=www.apprenticesearch.com&q=testing">
<input type="image" src="/userfiles/images/E/buttons/go.png" id="search-button" value="GO" siteurl="www.apprenticesearch.com"><!-- www.apprenticesearch.com -->
</form>
</div>
答案 0 :(得分:3)
您需要做的就是在网站A的表单中包含一个target =“_ blank”,以及请求在网站B上工作的方式必须包含siteSearchUrl输入
<form id="apprenticeForm" action="http://www.apprenticesearch.com/Resources/SiteSearch" method="POST" target="_blank" onsubmit='submitSearch()'>
<input type="text" name="searchText" id="searchText" value=""/>
<input type="submit" value="Submit"/>
<input id="siteSearchUrl" name="siteSearchUrl" type="hidden" value="http://yboss.yahooapis.com/ysearch/limitedweb?format=xml&sites=www.apprenticesearch.com&q="/>
</form>
喜欢这个http://jsfiddle.net/MVBLc/
在玩了表单提交后,但是网站B没有读取q参数,我相信这是因为输入已经转义&
而不是'&amp;'。
我已经更新了HTML,这是在提交表单之前更新字段的javascript
function submitSearch()
{
q = document.getElementById("searchText").value;
document.getElementById("siteSearchUrl").value = 'http://yboss.yahooapis.com/ysearch/limitedweb?format=xml&sites=www.apprenticesearch.com&q=' + q;
return true;
}
您需要使用javascript进行其他输入的原因与网站B在发送请求之前使用javascript在其script中填充siteSearchUrl的原因相同。
查看服务器的工作原理:站点B将该请求发送到/ Resources / SiteSearch,在其服务器上调用SiteSearch(String searchtext, String siteSearchUrl)
函数。如果您只是直接进入没有帖子参数的页面,您会发现由于没有从服务器设置siteSearchUrl而引发System.ArgumentNullException Parameter name: uriString
。
如果要分析siteSearchUrl的参数:
yboss.yahooapis.com
适用于Yahoo's BOSS API servcie sites
参数告诉API要在搜索结果中显示哪些网站q
参数是要搜索的查询