Передача массива jquery ajax в php не работает - PullRequest
1 голос
/ 27 февраля 2020

Я знаю, что это должно быть дубликатом. Но я не могу на всю жизнь понять, в чем дело. Я попытался передать массив напрямую, используя json кодирование / декодирование, присоединив массив к jquery, передав его в виде строки и взорвав его .... но я просто не могу заставить свой php работать с передачей данных. Помогите?!

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

РЕДАКТИРОВАТЬ: ОБНОВЛЕНИЕ: Я смог использовать:

var_dump($_POST);
die();

, чтобы получить следующий ответ в сетевой консоли. Это проливает свет на то, почему скрипт не запускается при передаче массива?

array(1) {
  ["download_listArray"]=>
  array(3) {
    [0]=>
    string(6) "7391-1"
    [1]=>
    string(6) "7392-2"
    [2]=>
    string(6) "7393-3"
  }
}

Для полноты картины, вот тот же ответ при использовании метода JSON .stringify:

array(1) {
  ["download_listArray"]=>
  string(26) "["7391-1","7392-2","7393-3"]"
}

Jquery:

console.log(download_list);   \\ gives: ["7391-1", "7392-2", "7393-3"]

 $.ajax({
            type: "POST",
            url: "zip_download.php",
            data: {download_listArray:download_list},

            success: function(){
            alert("OK");
        }
        });

PHP:

<?php
$sample_name_list = $_POST['download_listArray'];

//$sample_name_list = "7391-1,7392-2,7393-3";    #If I use these two lines, the script runs as expected
//$sample_name_list = explode(",", $sample_name_list);

foreach ($sample_name_list as $i => $sample_name){

   //do stuff
}

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

В ответ на ваше обновление:

" Для полноты картины, вот тот же ответ при использовании метода JSON .stringify :

array(1) {
  ["download_listArray"]=>
  string(26) "["7391-1","7392-2","7393-3"]"
}

Пожалуйста, найдите мой обновленный код для решения вашей проблемы в соответствии с вашими данными :

PHP:

<?php

$_POST['download_listArray'] = '["7391-1","7392-2","7393-3"]';

//var_dump($_POST['download_listArray']); die();

$sample_name_list = json_decode(stripslashes($_POST['download_listArray']));

foreach ($sample_name_list as $i => $sample_name){

   echo $sample_name.'<br>';
}
1 голос
/ 27 февраля 2020

Преобразуйте массив в Json и попробуйте так же, как в следующих кодовых блоках. Надеюсь, что это работает для вас.

Jquery:

var download_list= JSON.stringify(download_list);
$.ajax({
    type: "POST",
    url: "zip_download.php",
    data: {download_listArray:download_list},
    cache: false,
    success: function(){
        alert("OK");
    }
});

PHP:

<?php
$sample_name_list = json_decode(stripslashes($_POST['download_listArray']));

foreach ($sample_name_list as $i => $sample_name){
   //do stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...