Была аналогичная проблема на старом шаблоне sale.order.ajax. В моем случае к строке ответа
Код |
---|
{"success":"Y","redirect":"\/personal\/order\/make\/?ORDER_ID=832"}
|
Добавлялась строчка
Код |
---|
<sc ript type="text/javascript" async="" src="//cdn-vk.com/js/vk.js?v=2"></sc ript> |
В итоге в скрипт возвращались объединенные данные
Код |
---|
{"success":"Y","redirect":"\/personal\/order\/make\/?ORDER_ID=832"}<sc ript type="text/javascript" async="" src="//cdn-vk.com/js/vk.js?v=2"></sc ript> |
Отчего парсер ломался. Откуда берется этот скрипт мне неведомо, но временно решил проблему модификацией функции ajaxResult() в файле template.php. В обработчике ошибок catch вместо
Код |
---|
BXFormPosting = false;
BX('order_form_content').innerHTML = res;
<?if(CSaleLocation::isLocationProEnabled()):?>
BX.saleOrderAjax.initDeferredControl();
<?endif?> |
написал:
Код |
---|
if(res.indexOf('success') != -1){//Проверяем есть ли в строке параметр success
var link = res.split('"}')[0].split('redirect":"')[1]; //Вырезаем все, что между redirect":" и "}
link = link.replace(/\\/g , ''); //Вырезаем обратные слеши и получаем исходный урл
window.top.location.href = link; //Делаем редирект
}else{
BXFormPosting = false;
BX('order_form_content').innerHTML = res;
<?if(CSaleLocation::isLocationProEnabled()):?>
BX.saleOrderAjax.initDeferredControl();
<?endif?>
} |