Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
Paulwoop
0 / 0 / 0
Регистрация: 28.02.2017
Сообщений: 27
1

При распечатывании $_POST выдает array(0) { }

18.08.2018, 22:33. Просмотров 460. Ответов 6

Всем привет господа битриксоиды.

помогите безрукому, начинающему программисту разобраться в чем проблема. Дело в том, что есть код (связка js (аякс) и php) для записи данный в БД и апдейт данный пользователя. Код, как по мне, кажется рабочим, но вот при нажатии выдает array(0) { }. Я уже чет ору и не понимаю в чем причина. Рядышком положил аналогичную форму методом $_POST и все спокойно уходит и апдейтится.

Вот кодэ.

Люди. помогите.

HTML5
1
2
3
<form action='<?=POST_FORM_ACTION_URI?>' method="POST">
<a href="#" id="send">Послать данные через аякс</a>
</form>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(document).on("click", "#send", function(){
 
 
                                        var data1 = <? echo $x ?>;
                                        var data2 = <? echo $y ?>;
                                        var data3 = true;
 
                                        $.ajax({
                                            type: 'POST', // метод отправки
                                            data: {user_id:data1, tetka_id:data2, is_bought: data3},
                                            url: "<?=POST_FORM_ACTION_URI?>",
                                            cache: false,
                                            success: function(){
                                                alert( 'У вас списан 1 кредит' );
                                            }
                                        });
                                        return false;
                                    })
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
                                        $datauser = intval($_POST['user_id']);
                                        $datatetka = intval($_POST['tetka_id']);
                                        $datais = intval($_POST['is_bought']);
 
 
 
                                        if ($datauser && $datatetka && $datais) {
 
                                        $DB->Query("INSERT INTO `my_zakazi` VALUES('$datauser', '$datatetka', '$datais')");
                                        $kek = $key-1;
                                        $r = new CUser;
                                        $fields = Array(
                                        "UF_KEY" => $kek,
                                         );
                                         $r->Update($x, $fields);
                                         $strError .= $r->LAST_ERROR;
                                        }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2018, 22:33
Ответы с готовыми решениями:

Выдает ошибку:Нельзя преобразовать тип array . of integer к array . of integer
Program1.pas(44) : Нельзя преобразовать тип array of array of integer к array of array of...

При распечатывании листов, выбивает ошибку и снова печатает один любой лист
Принтер Canon LBP2900 Печатаю например 5 листов. Печатает второй, выбивает ошибку и снова начинает...

Ошибка инициализатор типа <Module> выдал исключение при распечатывании документа на Windows XP
Доброе утро.Ребята подскажите, с чем может быть связанно данное исключение, исключение вылетает на...

Как разместить изображение в Word 2010 чтобы оно получилось определенной ширины при распечатывании?
Имеется рисунок, но мне нужно разместить его в документе Word с размером 10см в ширину, как это...

Выдает ошибку Array type required
function mine(n,m:Integer;y:array of real):real; var min: Real; u,o:Integer; begin min:= y;...

6
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
19.08.2018, 09:24 2
Вы так кастрировали свой код, что на ваш вопрос ответить не чего. Приведенные отрывки не могут выдать подобного.
0
Paulwoop
0 / 0 / 0
Регистрация: 28.02.2017
Сообщений: 27
19.08.2018, 16:34  [ТС] 3
Да))) тут я соглашусь. Я понял в чем заключается проблема. Все дело в кэше. Вар дамп приходит не пустым. Все значения передаются, но страница закеширована. Отсюда появляется вопрос, как быть с кешем ? Правильно ли я понимаю, что в таком случает обработчик лучше размещать в component_epilog.php или мне лучше продолжить читать манул ? Если мануал то плиз ткните ссылкой чтоб хоть нужное читал. Спасибо.
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
20.08.2018, 09:58 4
Мануал

Как сделать тут лучше задачу знать. Может вам вообще лучше сделать отдельный скрипт принимающий ваш ajax запрос без всяких компонентов. Если аякс запрос должен вернуть результат работы компонента и он ни как не зависит от ваших дейстий, то в component_epilog вполне рабочий вариант. Если зависит: то можно в третий параметр компонента добавить свой элемент, и поместить туда md5(serialize($_POST)) - это разделит кеши.

Но лучше начать с изучения курсов ссылку на которые я дал.
0
Paulwoop
0 / 0 / 0
Регистрация: 28.02.2017
Сообщений: 27
20.08.2018, 10:15  [ТС] 5
Спасибо за ссылку.
Смотрите. У меня есть еще один вопрос. Я сделал некешируемую область. Нашел модуль на известной нам с вами площадке.

PHP
1
2
3
4
5
6
7
8
                                        if(
                                        Bitrix\Main\Loader::includeModule('api.uncachedarea')
                                        ) {
                                        CAPIUncachedArea::includeFile(
                                        '/ajax.php',
                                        array()
                                        );
                                        }
соответственно файл - ajax.php это код обработчика

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
  die();
?>
<?
$datauser = intval($_POST['user_id']);
$datatetka = intval($_POST['tetka_id']);
$datais = intval($_POST['is_bought']);
 
var_dump ($_POST);
 
 
if ($datauser && $datatetka && $datais) {
 
$DB->Query("INSERT INTO `my_zakazi` VALUES('$datauser', '$datatetka', '$datais')");
$kek = $key-1;
$r = new CUser;
$fields = Array(
"UF_KEY" => $kek,
);
$r->Update($x, $fields);
$strError .= $r->LAST_ERROR;
}
?>
и вот теперь я точно не могу понять, почему var_dump ($_POST); показывает 0. Можете объяснить логику?
0
Dias606
26 / 26 / 12
Регистрация: 20.09.2016
Сообщений: 340
24.08.2018, 23:26 6
100% форма пулит данные мимо твоего ajax.php
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
26.08.2018, 23:47 7
Если это полный код ajax.php то он не будет работать в приницпе. (или вы на него настроили urlrewrite.php?)
у вас согласно кода проверяется B_PROLOG_INCLUDED (таковой не находит) и выполняется die()

0 - это полный вывод вашего скрипта (var_dump - выдает чуть больше) ?


Вот вам упрощенная болванка скрипта обрабатывающего Ajax
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
use Bitrix\Main\Application;
 
define("NO_KEEP_STATISTIC", true);
define("NO_AGENT_STATISTIC", true);
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
 
$request = Application::getInstance()->getContext()->getRequest();
$id = (int)$request->getQuery("id");
 
 
$APPLICATION->RestartBuffer();
echo $id;
CMain::FinalActions();
die();
Есть еще вариант с использованием новинок Битрикс. О нем можно посмотреть в докладе
0
26.08.2018, 23:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2018, 23:47

Функция работает, но выдает Notice: Array to string conversion
Помогите исправить ошибку есть метод public function insertMany($table, $object,$last =...

Php выдает ошибку Cannot use object of type stdClass as array
помогите я очень плохо разбираюсь в чом дело можете тыкнуть .и сказать что на что заменить и где...

$_post и $_session в форме index.php. передача переменных из $_post в $_session
пока начал это делать... это в качестве примера. есть: &lt;?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru