Декодирование после передачи JSON в PHP - PullRequest
0 голосов
/ 14 июля 2011

Синтаксический анализ JSON в PHP

Моя переменная jsonvar имеет вид {"rating": "good"}

Как только я протолкну ее с помощью этого кода $ .ajax для отправки,Я немного озадачен тем, как должен выглядеть мой PHP (jsonproc.php).

$.ajax({
                url: 'jsonproc.php',
                data: {js:jsonvar},
                dataType: 'json',
                type: 'post',
                success: function (j) {
                        if (j.ok){
                            alert(j.msg);
                        } else {
                            alert(j.msg);
                        }
                    }
                });

Я настроил его как

$decoded = $_GET['js'];
$response = array(
   'ok' => true, 
   'msg' => $decoded['rating']);

Однако, когда я возвращаю его назад,

   echo json_encode($response);

при использовании alert (j.msg) отображается нулевое значение.

Если предположить, что я правильно передаю JSON, как я могу указать на рейтинг и получить значение"хорошо"?

Спасибо

РЕДАКТИРОВАТЬ

РЕШЕНО, ИСПОЛЬЗУЯ $ _REQUEST Мне удалось получить JSON, однако $ _GET не работал.

Кроме того, ключ использовал $ decoded -> {'rating'}, так как $ decoded больше не является массивом, о котором я не думаю, или, скорее, его тип diff равен единице?

Ответы [ 2 ]

3 голосов
/ 14 июля 2011

Похоже, вы смешиваете типы данных здесь:

 data: "js="+jsonvar,

jQuery преобразует JSON, если вы передаете объект, но вы смешиваете строку запроса с JSON.

Попробуйте:

data: {js: jsonvar},

Вам также может понадобиться ввести код json_dede ($ _ GET ['js']).

edit: Вы можете дважды проверить, что такое jQuery POSTing, с помощью Firebug / Web Inspector. Самый простой способ узнать наверняка.

0 голосов
/ 14 июля 2011

Попробуйте добавить это в начало вашего PHP-файла:

header('Content-type: application/json');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...