搜索另一个网站的搜索框

3

网站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>

连接到数据库B并在其上运行查询,这样您就可以从B获取结果。 - Bhadra
我认为我不需要这样做(而且也无法做到)。 - lee
1个回答

4
您只需要在Site A的表单中包含一个target="_blank",同时在Site 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/


在尝试提交表单后,Site 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进行额外输入的原因与Site B在请求发送之前在其脚本中使用JavaScript填充siteSearchUrl的原因相同。

查看服务器的工作方式:Site B将该请求发送到/Resources/SiteSearch,服务器上调用SiteSearch(String searchtext, String siteSearchUrl)函数。如果您直接转到该页面而没有发布参数,则会发现抛出了System.ArgumentNullException Parameter name: uriString,因为没有从服务器设置siteSearchUrl。

如果您想分析siteSearchUrl的参数:

  • URL yboss.yahooapis.com 是用于Yahoo's BOSS API服务
  • sites参数告诉API搜索和显示结果的站点
  • q参数是要搜索的查询

谢谢!你指引了我正确的方向...现在的问题是如何在提交表单时附加正确的搜索参数。我需要使用Javascript来不断更新 q=xxx 的值吗,因为用户正在输入? - lee
我尝试了类似这样的代码:<script type="text/javascript"> function updateSearch(){ document.getElementById("siteSearchUrl").value = 'http://yboss.yahooapis.com/ysearch/limitedweb?format=xml&amp;sites=www.apprenticesearch.com&amp;q=' + document.getElementById("searchText").value } </script> - lee
1
是的,你需要使用Javascript。我已经更新了我的答案,并提供了代码和另一个链接到jsfiddle,展示了解决siteSearchUrl问题的方法。 - Ertyguy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接