У меня есть:
var apiQuizData = {'ect stuff removed...',answers:{}}; $.each(dataCEActiveQuiz.quiz_data, function(index, answer) { if(answer.selected == undefined){ apiQuizData.answers[answer.id] = 0; } else { apiQuizData.answers[answer.id] = answer.selected; } }); $.post(URL, apiQuizData, function(data) {
Если я посмотрю на данные формы, переданные через заголовок с помощью инструментов проверки хромов, это показывает:
// url decoded answers[28194]:112768 answers[28195]:112773 answers[28199]:112788 answers[28202]:112803 answers[28204]:112809 // url encoded answers%5B28194%5D:112768 answers%5B28195%5D:112773 answers%5B28199%5D:112788 answers%5B28202%5D:112803 answers%5B28204%5D:112809 // query string answers%5B28195%5D=112773&answers%5B28199%5D=112788&answers%5B28202%5D=112803&answers%5B28204%5D=112809
В PHP я использую
$sent_data = file_get_contents('php://input'); $sent_data_decoded = json_decode($sent_data, true);
строка, которую получает php,
&answers=&answers=&answers=&answers=&answers=
Что мне нужно сделать с данными, чтобы они переходили к php со значениями?
Благодарю.
=================
Если я использую
$.post(URL, JSON.stringify(apiQuizData), function(data) {
Это то, что отправлено
{...extra stuff...,"answers":{"28195":"112773","28199":"112791","28201":"112796","28202":"112800","28204":"112810"}}
Из PHP с использованием json_decode(file_get_contents('php://input'), true);
{...extrastuff...}id%22%3A952077%2C%22answers%22%3A%7B%2228195%22%3A%22112
Когда я делаю print_r данных, это пустой массив?
=================
Обновлен пост jquery для
$.post(URL + 'sendCEQuizResults', {jsonstringify: JSON.stringify(apiQuizData)}, function(data) {
Обновлен код получения php для обработки нового способа. Я отправляю данные по-старому
$sent_data = file_get_contents('php://input'); if(substr($sent_data, 0, 13) == 'jsonstringify') { parse_str($sent_data); $sent_data_decoded = json_decode($jsonstringify, true); } else { $sent_data_decoded = json_decode($sent_data, true); }
По какой-то причине это не сработает, если я не присвоил JSON.stringify (apiQuizData) значение другого объекта. Кажется, браузер задушил текст сам по себе, я думаю, потому что это была огромная текстовая строка сама по себе? не уверен. В любом случае вышеуказанное обновление № 2 решило проблемы, которые у меня были.
Благодарю.