У меня проблема, как и у многих других людей, когда я могу прочитать переменную массива PHP после отправки ее через сообщение ajax(). Ajax работает успешно и отображает возвращенные данные, которые равны NULL. Я уже тщательно изучил решения SO для этой проблемы JSON/PHP, и мое описание проблемы показывает «почти» КАЖДОЕ решение для SO до сих пор.
На стороне PHP я пробовал:
$data = json_decode(file_get_contents('php://input'), true);
var_dump($data);
(Пропуск $HTTP_RAW_POST_DATA (устаревший), потому что он равен file_get_contents('php://input')
а также:
$data = json_decode($_POST["a_arr"], true);
Я уже пытался очистить спецификацию UTF-8 с помощью команды sed.
sed '1s/^\xEF\xBB\xBF//' < index.html > index2.html
Мой .ajax() выглядит так:
$.ajax ({
url:"file.php",
method:"post",
contentType: "application/json; charset=utf-8",
data: { a_arr : JSON.stringify(arr) },
})
.done(function(response){
$("#status").html(response);
});
На стороне Javascript вот мой массив:
var arr = [{"name":_name, "phone":_phone, "email":_email, "repname":repname, "repnumber":repnumber, "office":office}];
ajax_post(arr);
Я проверил, чтобы убедиться, что нет ошибки форматирования JSON, следующее успешно показывает мне допустимый форматированный массив JSON:
var data_arr = JSON.stringify(arr);
document.getElementById("status").innerHTML = data_arr;