Поле поиска, которое ищет другой сайт

Сайт 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> 

Все, что вам нужно сделать, это указать target = "_ blank" в форме на сайте A, а также способ, которым запрос работает на сайте 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/


После игры с отправкой формы, но параметр q, который не читается на сайте B, я считаю, что это связано с тем, что входной сигнал ускользнул &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 для заполнения siteSearchUrl в своем скрипте перед отправкой запроса.

Посмотрите, как работает сервер: сайт B отправляет этот запрос в / Resources / SiteSearch, где SiteSearch(String searchtext, String siteSearchUrl) на их сервере. Если бы вы просто пошли прямо на эту страницу без параметров сообщений, вы обнаружите, что System.ArgumentNullException Parameter name: uriString для того, чтобы с сайта не был установлен siteSearchUrl.

Если вы хотите проанализировать параметры siteSearchUrl:

  • URL yboss.yahooapis.com предназначен для службы BOSS API Yahoo
  • Параметр sites указывает API, какой сайт искать и отображать в результатах
  • и параметр q – это то, что запрос для поиска