2013-11-22 105 views
0

我有這個功能在PHPJson的編碼/解碼問題

json_encode(unserialize($response))); 

,我得到這個

{"photosets":{"cancreate":1,"page":1,"pages":1,"perpage":2,"total":2,"photoset":[{"id":"7212806405","primary":"1099675","secret":"bdef35451","server":"7384","farm":8,"photos":3,"videos":"0","title":{"_content":"Seo"},"description":{"_content":""},"needs_interstitial":0,"visibility_can_see_set":1,"count_views":"0","count_comments":"0","can_comment":1,"date_create":"1385114442","date_update":"13855"},{"id":"721593276","primary":"10991539336","secret":"a94a094acf","server":"7335","farm":8,"photos":2,"videos":"0","title":{"_content":"Benzina"},"description":{"_content":""},"needs_interstitial":0,"visibility_can_see_set":1,"count_views":"0","count_comments":"0","can_comment":1,"date_create":"1385113740","date_update":"1385141"}]},"stat":"ok"} 

在頁面我想起這可是它不javascript代碼

$(function() { 
     'use strict'; 
     $.ajax({ 
      url   : location.protocol + '//' + location.host + '/gallery_photolist.js', 
      data  : { 
           type : 'gallery' 
          }, 
      dataType : 'json' 
     }).done(function (result) { 
      console.log('ok'); 

在控制檯中不記錄任何東西。在Firebug中,我看到我的頁面調用正確的JavaScript(我可以在標籤中看到編碼的json),但我認爲我的腳本無法正確解析Json(我沒有帶標題「JSON」的選項卡)。

謝謝您的幫助。

編輯:這是螢火蟲窗口:

enter image description here

+1

您是否在服務器端調用PHP腳本,因爲您在該url參數上有一個.js擴展名,所以首先。你會想要將其改爲.php來調用php進程。 – ricksuggs

+0

不,沒問題,實際上它是「假的」,因爲它是從框架中路由的。我可以在Firebug中讀取Json,但不能在「JSON」選項卡中(可能無法解釋它) – sineverba

+1

警告:不要將不可信用戶輸入傳遞給反序列化()。由於對象實例化和自動加載,反序列化可能導致代碼被加載和執行,並且惡意用戶可能會利用這一點。如果您需要將序列化數據傳遞給用戶,請使用安全的標準數據交換格式,如JSON(通過json_decode()和json_encode())。 –

回答

1

你的PHP腳本轉義JSON它一起發送之前,因此爲什麼你的迴應選項卡顯示轉義字符。這是你問題的原因。

+0

確定....並請,我該如何解決我的問題? – sineverba

+0

嘗試在函數調用後立即在服務器端記錄'json_encode(unserialize($ response)))'的結果,以查看它是否與您在瀏覽器中獲得的值不同。「如何調試」 – ricksuggs

+0

Oy,好吧,我首先簡單地使用'json_encode($ response)' –