2

タグの配列があり、Instagram でそれらをテストして media_count を取得したいと考えています。次に、取得したデータを symfony コントローラーに送信します。このコードは機能しており、Success 関数でアラートに到達しました。

for (var i = 0; i < 1; i++) {
    var tagname = tags[i];      
    var url = "https://api.instagram.com/v1/tags/" + tagname + "?client_id=" + clientID;
    $.ajax({
        type: "GET",
        dataType: "jsonp",
        cache: false,
        url: url,
        success: function (res) { 
            var data = "{'name':'" + res.data.name + "','count':'" + res.data.media_count + "'}";
            $.ajax({  
                type: "POST",  
                url: controller-url, 
                data: data,
                success: function(response) {
                    alert(data);
                    
                }
            });             
        }
    });     
}   

次に、この回答のソリューションを使用して、次のようにコントローラーでデータをデコードします。

public function createAction(Request $request) {
    $params = array();
    $content = $this->get("request")->getContent();
    $params = json_decode($content, true); // 2nd param to get as array
    ...
} 

しかし、$params をテンプレートに送信しようとすると、空になります。それはなぜですか、そして私は何を間違っていますか?

4

2 に答える 2

2

私はこれを見ました:

public function createAction(Request $request) {
    $params = array();
    $content = $this->get("request")->getContent();
    $params = json_decode($content, true); // 2nd param to get as array
   ...
}

問題は、関数 createAction から $request を取得していないことです。

public function createAction(Request $request) {
    $params = array();
    $content = $request->getContent();
    if (!empty($content)) {
        $params = json_decode($content, true);
    }
   ...
}

$request から JSON コンテンツを取得します。

乾杯!

于 2015-11-24T17:05:31.350 に答える
2

2年遅れましたが、今日も同じ問題があり、この未回答の質問が見つかりました:

コールバック関数で、データが正しく文字列化されていると仮定すると (そのように見えます)、contentType:"application/json"

success: function (res) {
    var data = "{'name':'" + res.data.name + "','count':'" + res.data.media_count + "'}";
        $.ajax({  
            type: "POST",
            contentType : 'application/json',
            url: controller-url, 
            data: data,
            success: function(response) {
                alert(data);

            }

それ以外の場合、Symfony コントローラーで次を返す場合:

$req->headers->get("Content-Type")

...デフォルトで送信されていることがわかりますx-www-form-urlencoded

将来誰かに役立つことを願っています。

于 2015-09-04T13:25:33.623 に答える