Как читать и использовать массив ajax в PHP - PullRequest
0 голосов
/ 15 апреля 2019

Я не знаю, как или что поместить в мой PHP-файл для получения данных массива, отправленных по запросу AJAX. Что мне нужно в моем файле PHP, чтобы иметь возможность изолировать элементы массива один за другим? (количество элементов в массиве будет динамическим)

Я получаю проверенные значения флажков и помещаю эти значения в массив. Я буду использовать этот массив, чтобы поместить их в строку. Я попробовал следующее в моем PHP-файле и не получил никаких результатов ... либо выдает ошибку, либо страница отображает / ничего не отвечает.

foreach ($_POST['$inputBoxesValues'] as $value) {
  echo $value;
}
$amount = count($_POST);
for ($x = 0; $x <= $amount; $x++) {
  echo $_POST[$x];
}
echo implode(",", $_POST);

Я сейчас попробовал это .. и php файл ничего не ответил
новая функция AJAX

function formProcess() {
  var inputBoxesValues = $('input[type="checkbox"]:checked').map( function() {
    return $(this).val();
  }).get();
  var jsonString = JSON.stringify(inputBoxesValues);
  $.ajax({
    url: 'itemprocessor.php',
    data: {data : jsonString},
    dataType: 'json',
    method: 'POST',
    success: function(result) {
      window.location.href = "compare.php?" + result;
    }
  });
  console.log(jsonString);
}

PHP-файл ...

$data = json_decode(stripslashes($_POST['data']));
foreach($data as $d){
  echo $d;
}

Я знаю, как использовать, создавать и редактировать строки в PHP, но я просто не знаю, как использовать данные массива, отправленные в файл.

Эта функция вызывается при нажатии кнопки «Продолжить» (ниже приведен исходный код)

function formProcess() {
  var $inputBoxesValues = $('input[type="checkbox"]:checked').map( function() {
    return $(this).val();
  }).get(); //makes array
  $.ajax({
    url: 'itemprocessor.php',
    data: $inputBoxesValues,
    dataType: 'json',
    method: 'POST',
    success: function(result) {
      window.location.href = "compare.php?" + result;
    }
  });
  console.log($inputBoxesValues);
}

Ожидаемый результат / метод для результата
- Пользователь выбирает поля (у которых есть значения) и продолжает нажимать,
- AJAX отправляет данные, содержащие массив значений выбранных флажков,
- PHP-файл отправляет обратно строку, что-то вроде item1,item2,item3
- AJAX-скрипт затем отправляет пользователя на страницу «compare.php» со строкой ответа
- Страница «Сравнить» использует данные GET в URL

В настоящее время я только до 2-го шага, как мне добиться чтения данных AJAX?

Обновление: Теперь я пробовал другие вещи (перечисленные выше), но я заметил одну вещь: в моем php-коде, даже если я пытаюсь сделать echo "Foo Bar";, код PHP по-прежнему ничего не возвращает. Но когда я просто не набираю код PHP в файле и просто набираю "Foo Bar", в обычном тексте, нет форматирования html или чего-либо еще. файл отвечает "Foo Bar"
Отметив это, я сейчас тоже попытался поставить echo '<span>'. $d .'<span>';. После этого файл возвращает "'. $d .''; } ?>". Что, черт возьми, происходит?

Ответы [ 2 ]

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

Хорошо, так .. в основном я идиот, но теперь я знаю, в следующий раз!
Я прокомментировал предыдущие попытки и различные методы, которые использовал, поэтому я не «начинал новое» каждый раз.

Полный файл PHP, который у меня был

<?php/*
    $amount = count($_POST);
    //echo $amount;
    for ($x = 0; $x <= $amount; $x++) {
      //  echo $_POST[$x];
    }
   // echo implode(",", $_POST);
    echo array($_POST);

    $nickname[] = $_POST;
    echo $_POST['webdesign'];*/

    $data = json_decode(stripslashes($_POST['data']));
    foreach($data as $d){
        echo $d;
    }
?>

Проблема заключалась в том, что проклятый комментарий (/*) вверху. В нем не было пробела, и это не было в новой строке, я не знал, что это было требованием .. Чтобы исправить это, я поместил символы комментария в новую строку

<?php
/*
....

Мой окончательный рабочий код
JQuery / AJAX:

function formProcess() {
    var inputBoxesValues = $('input[type="checkbox"]:checked').map( function() {
        return $(this).val();
    }).get();
    $.ajax({
        url: 'itemprocessor.php',
        data: {data : inputBoxesValues},
        dataType: 'text',
        method: 'POST',
        success: function(result) {
            window.location.href = "compare.php?options=" + result;
        }
    });
    console.log(inputBoxesValues);
}

PHP:

<?php
    echo implode(",", $_POST['data']);
?>
0 голосов
/ 15 апреля 2019

Поскольку вы используете POST, вы можете использовать $_POST на своей странице php, куда отправляется ajax. Вы можете использовать $_POST['variable_name'] для получения всех данных.

Как и в вашем случае, попробуйте $_POST['$inputBoxesValues'], чтобы получить массив и выполнить foreach для перебора всех значений.

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