3

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 応答クラスは次のとおりです。

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

4

2 に答える 2

13

ドキュメントが言うように:

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

コールバック メソッドを$headersパラメーターとして設定しています。

したがって、次のことが必要です。

$response = new JsonResponse($result, 200, array());
$response->setCallback($callback);
return $response;
于 2012-10-01T09:55:05.507 に答える
1

JsonResponseコンストラクターはコールバック引数を取りません。メソッド呼び出しで設定する必要があります。

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

return $response;
于 2012-10-01T09:57:07.483 に答える