Почему моя функция php не получает массив, который я послал ей через ajax - PullRequest
0 голосов
/ 11 декабря 2018

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

Это функция php:

class ControladorCompraEfectivoYTarjeta {

   public function ctrCompraEfectivo(){

      if(isset($_POST["registroUsuario"])){

          if(preg_match('/^[a-zA-ZñÑáéíóúÁÉÍÓÚ ]+$/', $_POST["registroUsuario"]) &&
             preg_match('/^([0-2][0-9]|3[0-1])(\/|-)(0[1-9]|1[0-2])\2(\d{4})$/', $_POST["registroCalendario"]) &&
             preg_match('/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/', $_POST["registroEmail"]) &&
             preg_match('/^(?:\D*\d){2,4}\D*$/', $_POST["registroDireccion"]) &&
             preg_match('/^[0-9]{7,12}$/', $_POST["registroTelefono"])) {

             //here is where I need to manipulate the array and be able to perform other tasks with its elements

}

Функция php уже получает переменные POST, поэтому в ней есть некоторые проверки.При попытке отправить массив с помощью JSON.stringify с помощью AJAX, если я выполняю print_r ($ _POST), браузер сообщает мне, что поступают только переменные, которые я проверяю в начале функции, но ничего в массиве

Массив, который я получаю из запроса AJAX, в рамках этой функции Javascript:

$("#btnCheckout").click(function(){ 

    var total = $(".valorTotalCompra").html();
    var envio = $(".valorTotalEnvio").html();
    var subtotal = $(".valorSubtotal").html();
    var titulo = $(".valorTitulo");
    var cantidad = $(".valorCantidad");
    var valorItem = $(".valorItem");

    var idProducto = $('.cuerpoCarrito button, .comprarAhora button');

    var tituloArray = [];
    var cantidadArray = [];
    var valorItemArray = [];
    var idProductoArray = [];

    for(var i = 0; i < (titulo.length/2); i++){

        tituloArray[i] = $(titulo[i]).html();
        cantidadArray[i] = $(cantidad[i]).html();
        valorItemArray[i] = $(valorItem[i]).html();
        idProductoArray[i] = $(idProducto[i]).attr("idProducto");

    }

    var datos = new FormData();

    datos.append("total",total);
    datos.append("envio",envio);
    datos.append("subtotal",subtotal);
    datos.append("tituloArray",tituloArray);
    datos.append("cantidadArray",cantidadArray);
    datos.append("valorItemArray",valorItemArray);
    datos.append("idProductoArray",idProductoArray);

    $.ajax({

         url:rutaOculta+"ajax/carritoEfectivo.ajax.php",
         method:"POST",
         data: datos,
         success:function(response){
            console.log("The response is: ", response) }

    });

})

Что мне нужно сделать сейчас, чтобы иметь возможность отправить этот массив в функцию phpфайл и быть в состоянии манипулировать им?

Если я делаю console.log массива в Javascript, это выглядит так:

array(3) {
  [0]=>
  array(4) {
    ["titulo"]=>
    string(25) "Crea aplicaciones con PHP"
    ["cantidad"]=>
    string(1) "1"
    ["valorItem"]=>
    string(2) "10"
    ["idProducto"]=>
    string(3) "400"
  }
  [1]=>
  array(4) {
    ["titulo"]=>
    string(29) "Vestido Clásico - 36 - negro"
    ["cantidad"]=>
    string(1) "7"
    ["valorItem"]=>
    string(2) "77"
    ["idProducto"]=>
    string(1) "3"
  }
  [2]=>
  array(4) {
    ["titulo"]=>
    string(29) "Aprende Javascript desde Cero"
    ["cantidad"]=>
    string(1) "1"
    ["valorItem"]=>
    string(2) "10"
    ["idProducto"]=>
    string(3) "401"
  }
}

1 Ответ

0 голосов
/ 11 декабря 2018

Вы получаете массив из трех элементов в $ _POST.Итерируйте их, чтобы получить индексы, на которые вы нацеливаетесь:

foreach($_POST as $i => $el) {
      if(isset($el["registroUsuario"])){...

И в настоящее время вы ищете индекс, который не существует, по крайней мере в опубликованном образце данных:

$_POST["registroUsuario"]

Ваш код должен использовать те же имена индексов, которые отправляются в данных.

$_POST[0]["titulo"]

сделать

<code>echo "<pre>";
print_r($_POST);
echo "
";

дляПолучите некоторое представление о том, как выглядят ваши данные при получении на сервере. Это должно сказать вам, как правильно их обрабатывать.

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