Потребовалось реализовать штуку, которая будет работать как привязка к элементам с автозаполнением в админке, только в пользовательской части сайта.
Т.е. вводим что-то в текстовый инпут и нам уже выдаются похожие варианты из базы.
Мысль такая - если такое реализовано в админке - то значит где - то этот код есть. Было решено найти его. Достаточно было открыть консоль и посмотреть куда улетает AJAX запрос в админке
скрипт оказался таким -
Код |
---|
/bitrix/components/bitrix/main.lookup.input/templates/iblockedit/ajax.php |
окей, думаю я, теперь достаточно скормить нужные GET-параметры этому скрипту. Копирую компонент в свое пространство имен, затем отправляю запрос
Код |
---|
$(document).ready(function(){
$('#ajaxGames').on('keyup',function(){
var search = $('#ajaxGames').val();
var iblock_id = $('#ajaxGamesIblock').val();
var mode = 'SEARCH';
var type = 'ELEMENT';
var admin = 'Y';
var lang = 'ru';
var site = 'ru';
$.ajax({
url: "/bitrix/components/interrao-sport/main.lookup.input/templates/iblockedit/ajax.php",
type: "GET",
data: {IBLOCK_ID:iblock_id, MODE:mode, TYPE:type, admin:admin, lang:lang, search:search, site:site}
}).done(function(){
});
});
}); |
скрипт отрабатывает, но...ничего не возвращает.
Пришлось дебажить. обрыв скрипта происходит в файле
Код |
---|
/bitrix/modules/main/classes/general/main.php
|
в функции
Код |
---|
public static function PrologActions()
|
на строчке
Код |
---|
ob_start(array(&$APPLICATION, "EndBufferContent"));
|
очень странно. как вывод буферизации может валить скрипт? смотрю callback-функцию EndBufferContent, но вижу, что я в нее даже не попадаю.
распечатываю $APPLICATION и вижу такую строку
Код |
---|
[ERROR_STACK] => Array
(
[0] => CApplicationException Object
(
[msg] => Неверный логин или пароль.
[id] =>
)
|
я сижу под админом. как может быть неверный логин и пароль?