搜索其他网站的搜索框

时间:2013-11-19 03:44:41

标签: php search parameters

网站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&amp;sites=www.apprenticesearch.com&amp;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>

1 个答案:

答案 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;而不是'&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;
}

Demo

您需要使用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参数是要搜索的查询