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

晚了 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 回答
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 回答