передать значения массива из JavaScript в переполнение стека

<script>
$("#submit").click(function () {
var newhour= [];
for (var i = 0; i < arrayNumbers.length; i++) {
newhour.push(arrayNumbers[i].toString().split(','));
console.log("each: " + newhour[i]); // output: each: 07:00,08:30
each: 18:00,19:00
}
console.log("all: " + newhour); //output: all: 07:00,08:30,18:00,19:00

var jsonString = JSON.stringify(newhour);
$.ajax({
type: "POST",
url: "exp.php",
data:{data: jsonString},
cache: false,
success: function(){
alert("OK");
}
});
});
<script>

Я хочу передать значения массива newhour в php и использовать их для вставки в таблицу.
так php файл, exp.php:

$data = explode(",", $_POST['data']);
foreach($data as $d){
echo $d;
$sql = "insert into exp_table (hour) values ('$d')";
mysql_query($sql);
}

Однако я не могу принять значения. Что не так с кодом?
Не могли бы вы мне помочь?
Заранее спасибо.

согласно ответам я попробовал это на стороне php, но он возвращает NULL.

$data = json_decode($_POST['data'],true);
//$data = explode(",", $_POST['data']);
echo "data: " .$data;
var_dump($data); // no output
foreach($data as $d){
echo $d; // no output
}

0

Решение

Вам не нужно структурировать массив в JavaScript.

.Ajax выглядит после всего этого.

проходить

data: {newhours: newhour},

тогда вы получите $_POST['newhours'] в коде PHP, который будет массивом, который вы имели в JavaScript.

0

Другие решения

В Ajax нет параметров типа, используйте метод.
Помимо того, что все должно работать, вам может понадобиться декодировать JSON с помощью json_decode($_POST['data']) в вашем PHP-файле.
Надеется, это поможет!

  • Nic
0

Передать массив без JSON.stringify в сообщении данных ajax. И получить данные в php файле, используя $_POST['data'],

Я только что попробовал приведенный ниже код, и он отлично работает.

<?php
if(isset($_POST['data'])){
print_r($_POST);exit;
}
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
var newhour= [];
arrayNumbers = [['07:00','08:30'],['08:30','18:00','19:00']];
for (var i = 0; i < arrayNumbers.length; i++) {
newhour.push(arrayNumbers[i].toString().split(','));
console.log("each: " + newhour[i]);
// output: each: 07:00,08:30 each: 18:00,19:00
}
console.log("all: " + newhour); //output: all: 07:00,08:30,18:00,19:00

$.ajax({
type: "POST",
url: "abc.php",
data:{data: newhour},
cache: false,
success: function(data){
console.log(data);
}
});
});
</script>
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector