Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Как сформировать URL из массива с экранированием пробелов

12.11.2013, 11:49
Станислав

Зарегистрирован:
2012-01-27
Сообщений: 2

Добрый день.
В префиксе шаблона отвечающего за поиск по сайту имеется следующий код:
Код:
$f_AdminCommon
".opt(($totRows == 0 && !empty($srchPat[0]) || ($sub == 933)), "".opt($totRows == 0 && !empty($srchPat[0]) && ($sub != 933), "К сожалению, запрашиваемая информация не найдена.<br><br>Воспользуйтесь поиском от Яндекса:<br/><br/>")."<div class=\"ya-site-form ya-site-form_inited_no\" onclick=\"return {'bg': '#d9d9db', 'target': '_self', 'language': 'ru', 'suggest': false, 'tld': 'ru', 'site_suggest': true, 'action': 'http://bearing-service.ru/yandex/', 'webopt': false, 'fontsize': 12, 'arrow': true, 'fg': '#000000', 'searchid': '1959895', 'logo': 'rb', 'websearch': false, 'type': 2}\"><form action=\"http://yandex.ru/sitesearch\" method=\"get\" target=\"_self\"><input type=\"hidden\" name=\"searchid\" value=\"1959895\" /><input type=\"hidden\" name=\"l10n\" value=\"ru\" /><input type=\"hidden\" name=\"reqenc\" value=\"\" /><input type=\"text\" name=\"text\" value=\"\" /><input type=\"submit\" value=\"Найти\" /></form></div><div id=\"imag\"></div><style type=\"text/css\">.ya-page_js_yes .ya-site-form_inited_no { display: none; }</style><script type=\"text/javascript\">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0],e=d.documentElement;(' '+e.className+' ').indexOf(' ya-page_js_yes ')===-1&&(e.className+=' ya-page_js_yes');s.type='text/javascript';s.async=true;s.charset='utf-8';s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Form.init()})})(window,document,'yandex_site_callbacks');</script>

")."


"; $i=1;
$result .= "
".( $totRows ? "<div class='nc_list nc_text'>" : NULL )."


Поиск осуществляется только по сайту, без учета интернет-магазина (site.ru/netshop/).
В самом интернет-магазине имеется свой поиск, который работает через input методом GET (пример /netshop/search.html?kw=запрос).

Хочу объединить 2 поиска и выводить в основном поиске также результаты поиска по магазину (по тому же запросу). Например пользователь ввел в input'е сайта "Товар №1", и все товары из магазина, отвечающие запросы должны выводиться под выдачей результатов по основному сайту.

Для этого добавил функцию jQuary .load:
Код:
$(document).ready(function(){
$('#imag').load('site.ru/netshop/search.html?kw=$srchPat[0] .content-right');
});

то есть пытаюсь div с результатами в div на странице с поисковой выдачей на сайте.

1. Получается только если запрос в одно слово
2. Если запрос в 2 слова (есть пробел) - скрипт не отрабатывает.

Дописал перевод символов в соответствии с UTF-8 (заэкранировать пробелы):
Код:
 <script>
var encoded = encodeURIComponent($srchPat[0]);
$(document).ready(function(){
$('#imag').load('http://bearing-service.ru/netshop/search.html?kw=encoded .content-right');
});
</script>

Но все равно url не формируется и скрипт не отрабатывает.

Потом решил преобразовать в jQuary массив $srchPat[0] в строку и ее передать в виде хвоста URL:
Код:
url = arrayName.join('; ');


Но и в этом случает скрипт не отрабатывает.

Вопрос: подскажите пож-та как можно переменную $srchPat[0] добавить к URL (экранируя пробелы) для получения страницы поиска по магазину и выводу DIVа с поиском на страницу основного сайта?

bearing-service
17.11.2013, 19:41
Руслан Густокашин
Студия Вэлпис

Зарегистрирован:
2012-02-06
Сообщений: 962

Здесь два пути:
1. Либо поставьте вместо $srchPat[0] php-функцию urlencode($srchPat[0]);
2. Либо исправьте у себя в ajax-запросе ошибку (вы вставили в запрос слово "encoded" вместо значения переменной) примерно таким образом:
Код:

$('#imag').load('http://bearing-service.ru/netshop/search.html?kw='+encoded+' .content-right');

Кроме того, если вы вставляете javascript-код прямо в компонент или макет дизайна, то надо исправить еще и другую строчку следующим образом:
Код:

var encoded = encodeURIComponent('$srchPat[0]');

Либо так:
Код:

var encoded = '".urlencode($srchPat[0])."';
198 196 2013-11-17 19:41:42 13383
Описание проекта