Я пытающегося обновлять записи через декодированного JSON с помощью ID в этой функции CakePHP:Получение нуль с json_decode()
public function update() {
$this->layout = 'ajax';
if($this->request->is('post')) {
$decoded = json_decode($this->request->data,true);
if($data = $this->Foobar->save($decoded)) {
$data = json_encode(array(
"message" => "Foobar successfully updated.",
"update" => $this->request->data
));
} else {
$data = json_encode(array(
"message" => "Foobar could not be updated.",
"update" => $decoded,
"updateJson" => $this->request->data
));
}
} else {
$data = json_encode(array(
"message" => "Method should be post."
));
}
$this->set('data', $data);
Но расшифровывает постоянно возвращается null
:
{"message":"Foobar could not be updated.","update":null,"updateJson":{"ID":"1","status":2}}
Однако, если Я хожу в http://www.compileonline.com/execute_php_online.php и введите:
<html><head></head><body>
<pre>
<?php
print_r(json_decode('{"ID":"1","status":2}', true));
?>
</pre>
</body></html>
Это прекрасно работает ...
Глядя на смежные вопросы ...
- Я видел предложения попробовать
json_last_error()
, это возвращает0
для меня. - Я видел, как кто-то упоминал, что
magic_quotes
может быть включен, мои отключены. - Я видел предложения использовать
json_decode(utf8_encode($this->request->data),true);
, это по-прежнему возвращаетnull
для меня
Любые идеи?
'$ this-> запрос-> data' делать var_dump на него и проверить, если его действительным JSON – mithunsatheesh
Что такое URL вы вызываете его? расширение .json включено? – mark
@mithunsatheesh, я предполагаю, что предположил, что когда я включил '' this this-> request-> data' в 'data', и он показывает действительные json' {"ID": "1", "status": 2} 'it означало бы, что это действительно json ... однако должно быть что-то, что происходит за кулисами, поскольку 'var_dump' показывает массив ...' array (2) { ["ID"] => string (1) "1" ["status"] => int (2) } ' – smerny