Добрый день уважаемые коллеги, товарищи, любители да или просто заглянувшие.
Появилась у меня не большая проблема, которая жить мне спокойно не дает
уже второй день, гугление мне не помогло, поэтому решился написать на
данном форуме.
Обо всем по порядку.
Создал свой компонент, выводит необходимым образом список элементов инфоблока, в нем же
есть кнопка "Добавить элемент" по нажатию на которой всплывает popup, в
нем происходит заполнение полей и отправка постом на эту же страницу где
в компоненте происходит добавление элементов.
Структурно component.php выглядит так:
1. if ($_REQUEST["SAVE_ELEMENT"] == "Y") { Добавление элемента }
2. Выборка элементов для записи в $arResult
Проблема в том что при отправки формы аяксом добавление элемента в
инфоблок происходит, а вот getlist не выбирает сразу только что
добавленный элемент, только после нажатия F5 произойдет выборка в том
числе добавленного элемента. Не думаю что проблема в кеше так как
отключаю его на странице вообще.
После добавления элемента ставлю localredirect, не помагает, он просто
не отрабатывает, так же в самом popup после закрытия окна ставлю
location.reload(true) , не помогает.
Люди добрые, помогите, может кто сталкивался с подобным, а может я не
правильно работаю с аякс запросом? Почему не происходит выборка вновь
добавившегося элемента?
Привожу код из файла script.js моего компонента в котором формируется popup и происходит аякс запрос:
BX.ready(function(){
var page = $("input[name^='pagehref']").val();
var code = $("input[name^='hreftemplate']").val();
var url_to_roles = ''+code+'?myparams='+page;
var addAnswer = new BX.PopupWindow("my_answer", null, {
content: BX('ajax-add-answer'),
closeIcon: {right: "20px", top: "10px"},
titleBar: {content: BX.create("span", {html: '<b>Форма
добавления</b>', 'props': {'className': 'access-title-bar'}})},
zIndex: 0,
offsetLeft: 0,
offsetTop: 0,
draggable: {restrict: false},
buttons: [
new BX.PopupWindowButton({
text: "Добавить",
className: "popup-window-button-accept",
events: {click: function(){
BX.ajax.submit(BX("vivodform"), function(data){ //
отправка данных из формы с id="vivodform" в файл из action="..."
BX( 'ajax-add-answer').innerHTML = data;
});
this.popupWindow.close(); // закрытие окна
location.reload(true)
}}
}),
new BX.PopupWindowButton({
text: "Закрыть",
className: "webform-button-link-cancel",
events: {click: function(){
this.popupWindow.close(); // закрытие окна
}}
})
]
});
$('a.bx-context-button[title="Добавить запись"]').click(function(){
BX.ajax.insertToNode(url_to_roles, BX('ajax-add-answer')); // функция ajax-загрузки контента из урла в #div
addAnswer.show(); // появление окна
});
});
(пример взят у Дремина Станислава )
Примечание: в url_to_roles у меня ссылка на файл с формой , а в форме action на страницу где лежит компонент.
Заранее спасибо за помощь.
Появилась у меня не большая проблема, которая жить мне спокойно не дает
уже второй день, гугление мне не помогло, поэтому решился написать на
данном форуме.
Обо всем по порядку.
Создал свой компонент, выводит необходимым образом список элементов инфоблока, в нем же
есть кнопка "Добавить элемент" по нажатию на которой всплывает popup, в
нем происходит заполнение полей и отправка постом на эту же страницу где
в компоненте происходит добавление элементов.
Структурно component.php выглядит так:
1. if ($_REQUEST["SAVE_ELEMENT"] == "Y") { Добавление элемента }
2. Выборка элементов для записи в $arResult
Проблема в том что при отправки формы аяксом добавление элемента в
инфоблок происходит, а вот getlist не выбирает сразу только что
добавленный элемент, только после нажатия F5 произойдет выборка в том
числе добавленного элемента. Не думаю что проблема в кеше так как
отключаю его на странице вообще.
После добавления элемента ставлю localredirect, не помагает, он просто
не отрабатывает, так же в самом popup после закрытия окна ставлю
location.reload(true) , не помогает.
Люди добрые, помогите, может кто сталкивался с подобным, а может я не
правильно работаю с аякс запросом? Почему не происходит выборка вновь
добавившегося элемента?
Привожу код из файла script.js моего компонента в котором формируется popup и происходит аякс запрос:
BX.ready(function(){
var page = $("input[name^='pagehref']").val();
var code = $("input[name^='hreftemplate']").val();
var url_to_roles = ''+code+'?myparams='+page;
var addAnswer = new BX.PopupWindow("my_answer", null, {
content: BX('ajax-add-answer'),
closeIcon: {right: "20px", top: "10px"},
titleBar: {content: BX.create("span", {html: '<b>Форма
добавления</b>', 'props': {'className': 'access-title-bar'}})},
zIndex: 0,
offsetLeft: 0,
offsetTop: 0,
draggable: {restrict: false},
buttons: [
new BX.PopupWindowButton({
text: "Добавить",
className: "popup-window-button-accept",
events: {click: function(){
BX.ajax.submit(BX("vivodform"), function(data){ //
отправка данных из формы с id="vivodform" в файл из action="..."
BX( 'ajax-add-answer').innerHTML = data;
});
this.popupWindow.close(); // закрытие окна
location.reload(true)
}}
}),
new BX.PopupWindowButton({
text: "Закрыть",
className: "webform-button-link-cancel",
events: {click: function(){
this.popupWindow.close(); // закрытие окна
}}
})
]
});
$('a.bx-context-button[title="Добавить запись"]').click(function(){
BX.ajax.insertToNode(url_to_roles, BX('ajax-add-answer')); // функция ajax-загрузки контента из урла в #div
addAnswer.show(); // появление окна
});
});
(пример взят у Дремина Станислава )
Примечание: в url_to_roles у меня ссылка на файл с формой , а в форме action на страницу где лежит компонент.
Заранее спасибо за помощь.