2013-09-30 85 views
2

我有一個標籤數組,我想在Instagram上測試它們以獲得media_count。然後我想將我得到的數據發送給我的symfony控制器。此代碼正在工作,並在我的成功功能中達到警報。Symfony控制器中的json_decode?

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); 

       } 
      });    
     } 
    });  
} 

然後我使用該解決方案在this答案在控制器我的數據進行解碼,這樣的:

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

但是當我嘗試$ PARAMS發送到一個模板,它是空的。爲什麼是這樣,我做錯了什麼?

+1

你可以發佈什麼你在成功的數據? –

+1

我收到我的數據,如下所示:{'name':'foo','count':'350'} – tofu

+1

曾經遭遇過'$ params'? –

回答

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") 

...你會看到,它已經與日發e默認x-www-form-urlencoded

希望它能幫助未來的人。

1

我看着這樣的:

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

的問題是,你不採取從功能createAction的$請求。

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

現在您將從$ request獲取JSON內容。

乾杯!

+0

好的趕上!做得好 –