не удалось передать массив jquery в переменную php на той же странице - PullRequest
0 голосов
/ 03 апреля 2019

на этой странице (rolemanage.php), у меня есть кнопка, при нажатии на которую запускается скрипт для выдачи данных массива

код кнопки (rolemanage.php):

a href="<?= base_url('admin/roleaccess/') ?>" data-toggle="modal" data-target="#aksesModal" class="badge badge-warning aksesModal" data-id="<?= $r['id_lvl']; ?>" class="badge badge-warning">Akses</a>

сценарий onclick (rolemanage.php)

$('.aksesModal').on('click', function() {

    const id = $(this).data('id');

    $.ajax({
        url: "<?= base_url('admin/getMenuid'); ?>",
        data: {
            id: id
        },
        method: 'post',
        dataType: 'JSON',
        success: function(data) {
            var strData = JSON.stringify(data);                
        }
    }); });

, поэтому переменные data success возвращают массив из admin / getMenuid и массивы результатов в консоли, например:

(1) […] ​ 0: Object { id: "4", menu: "Barang Habis Pakai" } ​ length: 1

, затем послечто я попытался превратить этот объект в строку, используя json.stringify в случае успеха: функция

и результат, подобный следующему:

[{"id":"3","menu":"Menu"}]

, вопрос: когда я пытался вызвать strData на этой странице(rolemanage.php), используя

var_dump(json_decode($_POST['strData']));

показывает неопределенный индекс strData.

как получить значение strData тогда?

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Вы не можете.

  1. rolemanage.php запускает
  2. HTTP-сервер отправляет результат в браузер
  3. Браузер запускает JavaScript
  4. roleaccess run
  5. HTTP-сервер отправляет результат в браузер
  6. Вы можете обработать результат с помощью JavaScript

Ajax не требует перемещения во времени.Вы не можете изменить то, что произошло на шаге 1, с данными, которые не получите до шага 4.

Выполните обработку с помощью JavaScript на шаге 6 (и измените DOM с новыми данными), или не делайте этогоиспользуйте Ajax и вместо этого используйте регулярную отправку формы.

0 голосов
/ 03 апреля 2019

Вы должны выполнить еще один AJAX-запрос, в котором вы передаете strData в качестве параметра.

Кроме того, если вы хотите сохранить все в одном файле (rolemanage.php), вы должны написать оператор if, который проверяет, существует ли strData или нет, и сделать что-то на основе результата

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