Не могу получить данные поста из Javascript в PHP - PullRequest
0 голосов
/ 05 сентября 2018

это мой первый пост, я застрял на этом, помогите пожалуйста.

На странице у меня есть две формы Symfony (без классов), из которых я получаю некоторые данные, которые я храню в массивах. Первая форма предназначена для контракта, а другая форма используется для заполнения таблицы данных продуктов их данными (цена, количество и т. Д.). В каждой из этих форм у меня есть кнопка отправки, которой я управляю с помощью ajax (onclick), чтобы перейти на шаг вперед по страницам, не допуская обработки данных. Перечень данных, содержащий данные, является конечным этапом страницы, и под ним у меня есть кнопка проверки, которую я хочу использовать для отправки всех данных из первой формы и таблицы данных (в которой содержатся данные из второй формы), которую я ранее хранились в массивах.

Я знаю два способа сделать это ($ .post с jQuery и другой с ajax, но оба не работают). Мне удается перенаправить на другую страницу, но я не могу получить данные $ _POST (или $ request).

Вот часть «последней кнопки» ajax (с другим способом, который я пробовал в комментариях):

$("#btn_final").click(function( e ) {

    // console.log(produits);

    // $.post(
    //     path_confirm, 
    //     { produits: produits },
    //     function() {
    //         window.location.replace(path_confirm);
    //     }
    // );


    $.ajax({
        url: path_confirm,
        type: 'POST',
        // dataType: 'html',
        data: { 'produits' : produits, 'contrat' : contrat },
        // context: this,
        // dataType: "json",
        success:function(data) {
            window.location.replace(path_confirm);
            // console.log(data);
        },
        error:function(data) {
            alert("erreur");
        }
    });

и вот мой основной контроллер, предположительно получающий данные:

public function getData(Request $request) {

    // $produits = $request->request->get('produits');
    // $contrat = $request->request->get('contrat');

    if ($_POST) {
       var_dump($_POST);die;
    } else {
        echo "<h1> no data :/ </h1>";die;
    }

Я перенаправлен на страницу, но ответ "нет данных". Заранее благодарю за помощь.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Мне удалось сделать это одной простой строкой благодаря плагину jQuery под названием «redirect». Если это может помочь кому-то подняться позже:

То, что вам нужно, это просто импортировать скрипт отсюда на ваш взгляд: https://github.com/mgalante/jquery.redirect/blob/master/jquery.redirect.js

Тогда просто напишите:

$.redirect(url, [values, [method, [target, [traditional, [redirectTop]]]]])

В моем случае я написал:

$.redirect(path_confirm, {'produits': produits, 'contrat': contrat, 'pj': pj, 'idclient': id});

и это работает.

0 голосов
/ 05 сентября 2018

Поскольку перенаправление вызывает потерю данных POST., Запрос AJAX ожидает возврата информации через AJAX. Добавьте предотвращение по умолчанию, чтобы остановить перенаправление:

$("#btn_final").click(function( e ) {
    e.preventDefault();

Затем соблюдайте запрос AJAX в инструментах разработчика. Если $('#btn_final') является кнопкой отправки, вам нужно использовать обработчик .submit().

Если вы планируете выполнить редирект на PHP-скрипт, обрабатывающий данные, совершенно не требуется jQuery или AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...