我正在尝试从Symfony2返回JSONP。我可以很好地返回常规的JSON响应,但好像JSON响应类忽略了我的回调。
$.ajax({
type: 'GET',
url: url,
async: true,
jsonpCallback: 'callback',
contentType: "application/json",
dataType: 'jsonp',
success: function(data)
{
console.log(data);
},
error: function()
{
console.log('failed');
}
});
然后在我的控制器中:
$callback = $request->get('callback');
$response = new JsonResponse($result, 200, array(), $callback);
return $response;
我从中获得的响应始终是常规JSON。没有回调包装。
Json Response类在这里:
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/JsonResponse.php
答案 0 :(得分:13)
正如文档所说:
$response = new JsonResponse($result, 200, array(), $callback);
您将回调方法设置为$headers
参数。
所以你需要:
$response = new JsonResponse($result, 200, array());
$response->setCallback($callback);
return $response;
答案 1 :(得分:1)
JsonResponse
的构造函数不接受回调参数。您需要通过方法调用来设置它:
$response = new JsonResponse($result);
$response->setCallback($callback);
return $response;