Здравствуйте. Внутри foreach не отзывается echo, а переменная $type не меняет своего значения даже с использованием $GLOBALS['variable'] или global. PHP: $type = 0; $data = json_decode($_POST['jsonData']); foreach ($data as $key=>$value) { echo "string"; if ($value === 'some value') $type = 1; if ($value === 'another value') $type = 1.5; file_put_contents("TESTING_FOLDER/TESTING_FILE.txt", $type); } echo $type; П. С. Совершенно не понимаю в чем дело. Буду рад помощи.
@avalan4e проверь что в var_export($data); https://secure.php.net/manual/ru/function.json-last-error.php Проверяй нет ли ошибок перед foreach или использование массива. https://secure.php.net/manual/ru/function.json-decode.php Но у тебя там не массив, а объект, чтобы был массив то по документации надо вторым аргументов функции передать true: json_decode($_POST['jsonData'], true); Лучше собрать все данные в переменную и за один раз записать file_put_contents() а не как ты делаешь каждый цикл вызов file_put_contents(). Если несколько пользователей запустят скрипт, то файл TESTING_FOLDER/TESTING_FILE.txt можешь битый получить. Надо блокировки использовать, MySQL базу данных, отдельный файл каждому пользователю и т. д.
@denis01 в var_export($data); NULL Ошибок перед foreach нет. Проверяю следующим образом: PHP: switch (json_last_error()) { case JSON_ERROR_NONE: echo ' - Ошибок нет'; break; case JSON_ERROR_DEPTH: echo ' - Достигнута максимальная глубина стека'; break; case JSON_ERROR_STATE_MISMATCH: echo ' - Некорректные разряды или не совпадение режимов'; break; case JSON_ERROR_CTRL_CHAR: echo ' - Некорректный управляющий символ'; break; case JSON_ERROR_SYNTAX: echo ' - Синтаксическая ошибка, не корректный JSON'; break; case JSON_ERROR_UTF8: echo ' - Некорректные символы UTF-8, возможно неверная кодировка'; break; default: echo ' - Неизвестная ошибка'; break; } Пересылаю в .php следующий объект: Код (Javascript): data = "string"; var formData = { "Имя": data }; alert($.toJSON(formData)); $.ajax({ url:'name.php', type:'POST', data:'jsonData=' + $.toJSON(formData) }); Не могу понять, что не так. Ведь получается, что json_decode таки срабатывает без ошибок, но внутри лажа -- NULL
@avalan4e ага всё верно, в google chrome можно посмотреть в инструментах разработчика что там отсылается. Возможно проблема тут, данные должны быть правильно запакованы ещё раз, http://api.jquery.com/jquery.ajax/ Лучше передавай как PlainObject или Array, как ты делаешь используя string, можно не правильно urlencode сделать.