Есть архив материалов на сайте.В виде материалов всеназвания имеют вид
<a href="ссылка на страницу материала" class="newslink">Название материала</a> На странице материала его название имеет вид <div id="ldF999" >Название материала</div> и припомощи скрипта в первом посте вывожу похожие материалы Допустим название такое <div id="ldF999" >Это название этого материала</div> этим получаю массив из слов названия bquery = $("#ldF999").text().match(/([а-яёa-z]){4,}/gi); отбросив ненужное,т.е. цифры,знаки препинания и слова менее чем из четырех букв Присваиваю query = bquery[0] и ищу похожие слова в архиве с помощью поиска $.post('/load/', {query: query, a: 2}, ... Но так ищет только по первому слову из массива bquery Когда query меняю в срипте на другое значение ,к примеру bquery[2] ищет нормально,но вот не получается сделать так чтоб при отсутствии схожих материалов по названию в архиве,атоматически при norez==undefined присвоить query значение следующего слова из массива и повторить поиск схожих материалов Результаты поиска выводятся в <div style=" display: none;overflow: hidden;" id="ressearch"></div> |
надо было расписать так ( я про первые строчки,до $.post )
тогда и понять было бы легче и почему-то у меня неуверенность насчет переменной func и самой рекурсии // это массив [ название, этого, материала ] var bquery = "Это название этого материала".match(/([а-яёa-z]){4,}/gi) // номер слова в массиве var n = 0; // ищем "название" $.post('/load/', {query: bquery[n], a: 2}, function(data){ // ссылка на обработчик результата. т.е. на эту анонимную функцию var func = arguments.callee; if( !norez ){ /* что приходит при верном или неверном слове из архива? у меня будет слово Error */ if( data == 'Error' ) { // проверка на наличие такого индекса в массиве if( n < bquery.length ){ /* через половину секунды отсылаем POST-запрос серверу со следующим словом ++n <- это 1. тоесть слово ---> "этого" важно отметить,что обработчик будет ТАКОЙ ЖЕ, т.е. опять вызовет POST-запрос, но уже с увеличенным "n" ( 3 , слово -> "материала") */ setTimeout( function(){ $.post('/load/', {query: bquery[++n], a: 2}, func); }, 500 ); // мы прошли все элементы массива, поиск неудачен } else { alert( 'НЕ НАЙДЕНО' ); } } } }); |
melky,
Получается - ничего не выйдет? |
Ты попробовал ? по логике должно работать
|
пробовал работает отлично,только с одним из любых заданных query=bquery[]
|
Строчку проверки, верный или неверный результат пришел, изменил?
Data=="errOr" нет, верно? |
заменить norez==undefined на Data=="errOr" ?
так не получается |
facepalm
как происходит проверка, нашли ли мы или нет? Цитата:
|
ну как...сдесь же
if (norez==undefined)... |
что отвечает архив? по нем надо сверяться, верен ли результут?
|
Часовой пояс GMT +3, время: 12:13. |