Ошибка синтаксического анализа JSON, возвращенного через JsonResponse компонента Symfony

Мой звонок по Ajax:

$.ajax({
url : path,
type: 'POST',
dataType : 'json',
data: data,
success: function(memberExtra) {
console.log (memberExtra);
}
});

Мой ответ:

HTTP/1.0 201 Created
Cache-Control: no-cache
Content-Type:  application/json
Date:          Tue, 10 Feb 2015 23:49:09 GMT

{"memberExtras":{"label":"seller","dropdown":"abc"}}

Мой PHP:

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;

/**
* Update the pulldown menus.
*
* @Route("/classification", name="classification")
* @Template()
*/
public function classificationAction(Request $request)
{
$memberType = $request->request->get('classification');

$label = $memberType["user"]["memberType"];
$dropdown = "abc";
$response = new Response(json_encode(array('memberExtras' => array(
'label' => $label,
'dropdown' => $dropdown,
))), Response::HTTP_CREATED);
$response->headers->set('Content-Type', 'application/json');

return new Response($response);
}

console.log ничего не выводит. Даже если регулярное текстовое выражение типа («тестовое задание»).

Если я удалю dataType: ‘json’ объявление и попытка анализа данных вручную $ .ParseJSON (memberExtra), Я получаю эту ошибку:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Не слишком удивлен. По сути, кажется, что синтаксический анализатор отключается от заголовка, возвращаемого классом Symfony. Как я могу избежать этого заголовка и просто попасть в JSON?

Спасибо!

2

Решение

попробуйте просто:

return $response;

вместо возврата

new Response($response);

Кстати, я предлагаю вам просто использовать

return new JsonResponse($myarray)

и удалите аннотацию @Template из вашего метода.

Надеюсь это поможет

0

Другие решения

замещать return new Response($response); с return $response;

Основной синтаксис:

$response = new Response();

$response->setContent(json_encode(array(
'id' => $entity->getId(),
'other' => $entity->getOther(),
)));

$response->headers->set('Content-Type', 'application/json');

return $response;
0

По вопросам рекламы [email protected]