PHP Zend Framework JSON Не удалось декодировать - PullRequest
2 голосов
/ 02 февраля 2012

Я использую ajax:

$.ajax({
        url: 'testURL',
        type: 'POST',
        dataType: 'json',
        data: {userId: userIds, imageUrl: imageUrl, message: message },
        success: callBack
    });

и на стороне сервера:

$data = $this->_request->getPost();
        $response = Zend_Json::decode($data, true);

Но я получаю ошибку на стороне сервера:

Decoding failed

Что яне так?

Спасибо за помощь2:

Вот еще раз js код php код и результат: (

 $.ajax({
        url: 'testURL',
        type: 'POST',
        dataType: 'json',
        data: "{'userId': 'test1234', 'imageUrl': 'testimageUrl', 'message': 'testmessage' }",
        success: callBack
    });


 public function sendmessageAction() {
    $data = $this->_request->getPost();
    print_r($data);
    $response = $data;
$this->_helper->json($response);

РЕЗУЛЬТАТ:

    Array
(
)

Ответы [ 3 ]

3 голосов
/ 02 февраля 2012

Crashspeeder должен быть корректным, по крайней мере, в своем формате данных.

из руководства по PHP - json_decode - Декодирует строку JSON

//correct json format
Example #1 json_decode() examples


<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?> 

и

Пример # 3 распространенных ошибок с использованием json_decode ()

<?php

// the following strings are valid JavaScript but not valid JSON

// the name and value must be enclosed in double quotes
// single quotes are not valid 
$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// the name must be enclosed in double quotes
$bad_json = '{ bar: "baz" }';
json_decode($bad_json); // null

// trailing commas are not allowed
$bad_json = '{ bar: "baz", }';
json_decode($bad_json); // null

?> 

также вы можете использовать ...

json_last_error - возвращает последнюю произошедшую ошибку

чтобы получить ошибку.

1 голос
/ 02 февраля 2012

На первый взгляд кажется, что отправляемые вами данные могут быть неверными. Если я правильно помню, свойства объекта должны быть в кавычках. Попробуйте это.

$.ajax({
    url: 'testURL',
    type: 'POST',
    dataType: 'json',
    data: {"userId": userIds, "imageUrl": imageUrl, "message": message },
    success: callBack
});
0 голосов
/ 23 мая 2012

Я предлагаю следующее:

  1. Удалить dataType: 'json' из запроса AJAX.
  2. В действии используйте return $this->_helper->json($responseArray);.Нет необходимости менять макет или что-нибудь.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...