2016-02-29 2 views
0

Я пытаюсь получить некоторые данные, отправленные на страницу PHP для обновления переменных PHP-сессии. Я попробовал несколько разных примеров, которые я нашел здесь, но просто не могу заставить их работать. Данные никогда не принимаются на странице PHP.Метод ajax post не получает данные на PHP-странице

Вот мой Javascript/JQuery:

var str, ProductID, sessionValues= []; 
ProductID = "1"; 
str = {"ProductID": ProductID, "State": "UNCHECKED"}; 
sessionValues.push(str); 
ProductID = "2"; 
str = {"ProductID": ProductID, "State": "CHECKED"}; 
sessionValues.push(str); 

var postObj = {"sessionData": sessionValues}; 
console.log(postObj); 

$.ajax({ 
    type: 'POST', 
    contentType : 'application/json', 
    data: {'data': JSON.stringify(postObj)}, 
    url: 'setSession.php' 
}).done(function(response){ 
     console.log(response); 
    }).fail(function(jqXHR, textStatus, errorThrown){ 
     alert('FAILED! ERROR: ' + errorThrown); 
}); 

Это то, что мой объект данных выглядит следующим образом:

Console image

Тогда на стороне PHP все, что я получаю ошибку, что я поставляется неверный аргумент foreach. Независимо от того, сколько раз я повторяю sessionValues.push(str), мой браузер всегда сообщает 528 байт.

<?php 
$data = json_decode($_POST['data']); 
print_r($data); 
foreach ($data->sessionData as $key => $value) { 
    echo "$key => $value"; 
} 
?> 
+3

* "Тогда на стороне PHP все, что я получаю ошибку, что я поставила неверный аргумент Foreach." * - Errr ... * *, что PHP? –

+0

Можете ли вы поделиться и с PHP-кодом? –

+0

... нет, мы просто оставим его. Мы «профи», помните? @MatthewLymer мы читаем умы, а не код. –

ответ

1

Вы должны удалить contentType : 'application/json',, потому что это не то, что вы посылаете.

Когда вы отправить в application/json правильно ... stringifying всего объекта, а не только его части, то $_POST будет пустым, и вы должны получить доступ к данным с использованием json_decode(file_get_contents('php://input'))

Там также нет необходимости stringify ваш другой объект ... JQuery сформирует закодировать это для вас, и вы можете получить доступ к нему как массив

Попробуйте

JS

$.ajax({ 
    type: 'POST',   
    data: {'data': postObj}, 
    url: 'setSession.php' 
}).done(function(response){ 

PHP

<?php 
$data = $_POST['data']; 

foreach ($data['sessionData'] as $key => $value) { 
    echo "$key => $value"; 
} 
?> 
+0

Спасибо! Данные теперь находятся на стороне Php. Результат в консоли - это просто '0 => Array1 => Array', но пока я могу двигаться дальше! – user1601513

+0

charlietfl отправил правильный ответ на проблему. Все остальные просто прервали этот вопрос. Если вы просто клоун, который хочет что-то сказать, вы тянете Трамп. – user1601513