yandex-поиск (JavaScript или ASP?)
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        


12»»

yandex-поиск (JavaScript или ASP?) Expand / Collapse
Автор
Сообщение
22.03.2006 13:46
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 05.04.2007 15:08
Сообщ.: 27, Visits: 299
проблема такая: надо организовать поиск по указанному сайту при помощи яндекс-машины.
не могу никак решить что же лучше использовать JavaScript или ASP
сделала код на JavaScript - получаю ответ req.responseXML (где req- отправленный запрос) и req.responseText, причем req.responseText нормально отображается в текстовом окне. а вот как req.responseXML сохранить куда-нибудь и вытащить из него теги не могу понять...
если же делать на асп возникает проблема со статусом req.readyState. сервер получает ответ req.readyState=1 (загрузка) и отправляет это браузеру. и все. тут бы как нибудь сделать, чтоб страничка перегенерировалась каждый раз при смене статуса. и это тоже не могу найти как сделать.
подскажите хотябы что лучше использовать и куда копать, а то и там и там тупик для меня...
Сообщ. #893393
24.03.2006 9:37
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 05.04.2007 15:08
Сообщ.: 27, Visits: 299
в общем в продолжение темы.
я решила делать на асп, чтоб файл сохранялся на сервер например в 1.xml а потом показывался при помощи таблицы стилей. но тут появилаь другая беда:
MSXML2.ServerXMLHTTP.3.0 не работает через прокси-сервер,
а WinHttp.WinHttpRequest.5.1 видимо кодирует все в 1251, а так как с яндекса приходит ответ в utf-8 получается набор символов. да еще и не имеет такого объекта типа responseXML, а только responseText и соответственно у него нет метода save().

ну а JavaScript естественно сохранять в файл на сервере не может и не хочет...
Сообщ. #893560
24.03.2006 11:34
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
MXSML умеет работать через прокси
http://relib.com/blogs/smalig/archive/2005/02/04/170.aspx

Для работы с XML не обязательно сохранять его на диск, можно выполнять XSLT преобразования с документом в памяти.

В моен понимании тебе надо создать объект MSXML2.ServerXMLHTTP, сделать запрос на сервер, получить ответ, загрузить локальный XSLT файл, выполнить преобразование выводя результаты в браузер.
Сообщ. #893585
27.03.2006 9:01
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 05.04.2007 15:08
Сообщ.: 27, Visits: 299
Спасибо,
в общем теперь я могу получить responseXML.
у нас сайт организован таким образом, что при помощи асп мы получаем даные , формируем из них xml-модель, а потом при помощи xslt отображаем.
так вот я хотела прикрепить полученный responseXML в модель, ну там например сделать новый нод и к нему прицепить responseXML как вложенный нод
только вот никак не могу найти метод, который бы мог это сделать.
importNode не работает, createElement тоже не позволяет такого и getElementByTagName и подобные ему тоже не работают.
Сообщ. #893709
27.03.2006 11:47
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Попробуй создать копию нужного узла методом cloneNode, после чего добавь его в другой документ методом appendChild.
Сообщ. #893734
28.03.2006 10:14
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 05.04.2007 15:08
Сообщ.: 27, Visits: 299
Ура! чудо почти свершилось. теперь у меня поиск работает, только вот возникла проблема с кодировками. я получаю первую страницу и хочу сделать переход на др страницу, но для этого мне надо переслать еще раз текст запроса и номер страницы. сейчас у меня выглядит так:
 

.........



По запросу "" найдено:

Строгих соответствий:
Всего:







 








|<


ну и вот в этой самой последней ссылке param получается равен какой-то белеберде и соответственно новый запрос формируется также коряво.

вот такой код асп делает поиск
<%@ Language=JScript Codepage="1251" %>


<%
var param = getParam('param', '1');
var host = 'XXX.ru';
var url = 'http://xmlsearch.yandex.ru/xmlsearch?'+param;
var page = getParam('p', '0');

var req = new ActiveXObject("MSXML2.ServerXMLHTTP.3.0");
var Xxml = ('"'+param+'" host="'+host+'"'+page+''+param+'0');
req.open("POST", "http://xmlsearch.yandex.ru/xmlsearch?"+param, false);
req.setTimeouts(30000, 30000, 30000, 30000);
req.send(Xxml);
var strHTML = req.responseText;
strXML = req.responseXML;

var xml_doc = new ActiveXObject("Microsoft.XMLDOM");
xml_doc.async = false;
xml_doc.load(strXML);

var xml = xmlDOM;
var parentNode = xmlDOM.documentElement;
var curr_node = strXML.lastChild;
parentNode.appendChild(curr_node);

browseXML('2');

%>

почему именно ссылка передает такие корявости, ведь до этого тотже элемент выдается правильно
По запросу "" найдено:


и как быть?
Сообщ. #893810
28.03.2006 11:45
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Похоже на несовпадение кодировок. У тебя xml документ использует windows-1251, а запрос к Яндексу выполняется в UTF-8. Я бы попробовал выполнять перекодирование с помощью ADODB.Stream. Создаем Stream объект, ставим свойство Charset в windows-1251, пишем unicode текст методом WriteText, перематываем на начало и читаем результат методом ReadText. Вроде так. Не проверял в деле, но должно работать.
Сообщ. #893817
29.03.2006 7:05
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 05.04.2007 15:08
Сообщ.: 27, Visits: 299
в общем случилось странное: проблемы с кодировкой как-то сами собой исчезли, пока я яву скрипт дописывала. и теперь все нормально.
но тут возникла новая проблема: все идеально работает локально и на одном хостинге, а вот на другом хостинге (я тестировала на двух сайтах один и тот же код) при попытке искать русский текст выпадает ошибка 500. причем там же ищет английские буквы и цифры без проблем. на другом хостинге такого нет.
что может быть не то? я даже не могу представить в каком направлении искать ошибку. похоже что проблемы с хостингом, но вот какие?...