2012-10-01 33 views
3

我試圖從Symfony2中返回JSONP。我可以返回一個普通的JSON響應,但好像JSON響應類忽略了我的回調。使用AJAX調用從Symfony2控制器返回JSONP

$.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響應類是在這裏:

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/JsonResponse.php

回答

13

由於文檔說:

$response = new JsonResponse($result, 200, array(), $callback); 

你設置回調方法作爲$headers參數。

所以,你需要:

$response = new JsonResponse($result, 200, array()); 
$response->setCallback($callback); 
return $response; 
+0

啊!很好,謝謝。 – BobFlemming

1

JsonResponse的構造不走回調參數。您需要通過方法調用來設置它:

$response = new JsonResponse($result); 
$response->setCallback($callback); 

return $response;