= BX('name').value;
const button = BX('my-button');
const message = BX('message').value;
const id = BX('hide_id').value;
BX.bind(button, 'click', (event) => {
event.preventDefault();
console.log(message);
BX.ajax({
url: 'ajax.php',
data: {
name_user: name,
message_txt: message,
hide_id: id
},
method: 'POST',
dataType: 'json',
timeout: 10,
onsuccess: function( res ) {
//console.log('res: ', res)
button.innerText = res.text;
},
onfailure: e => {
console.error( e )
}
})
})
ajax.php обработчик для теста написано: <?$result = [
'isSuccess' => true,
'text' => "user was typing: {$_POST['name_user']}",
];header("Content-type: application/json; charset=utf-8");
echo json_encode(
$result);
в ajax.php пролог подключен?
нет, добавила if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); но ничего не поменялось
У вас при обращении аяксом не подключена B_PROLOG_INCLUDED. Эту строку нужно убрать и добавить в начало файла вот это: require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); Это должно сработать, но так делать неправильно. Если у вас компонент, то лучше воспользоваться BX.ajax.runComponentAction
Я добавила первую строчку, но ничего не поменялось. BX.ajax.runComponentAction посмотрела документацию, мне непонятно disk.folder.get он вызывает действие, что подразумевается под действием(вызов метода?), у меня ajax вызывается в шаблоне то есть все действия происходят так же в шаблоне? BX.ajax.runAction('disk.folder.get', { data: { folderId: 1 }, analyticsLabel: { viewMode: 'grid', filterState: 'closed' } }).then(function (response) { console.log(response); / { "status": "success", "data": { "ID": 1, ... }, "errors": [] } / }, function (response) { //сюда будут приходить все ответы, у которых status !== 'success' console.log(response); / { "status": "error", "errors": [...] } / });
Вы код с мануала скопировали?
Обсуждают сегодня