2011-09-22 68 views
1

我的服務器端代碼: 返回的數組:JSON表示它爲空?

return array('success'=>true, 'client_id' => $_GET['id']); 

,然後將其回顯

echo htmlspecialchars(json_encode($result), ENT_NOQUOTES); 

JSON看起來像這樣輸出時;

{"success":true,"client_id":"db7A8"} 

但是當我運行

onComplete: function(id, fileName, responseJSON){ 
      var newBucket = $.parseJSON(responseJSON); 
      alert(newBucket.client_id); 
      } 

它說,它是空(它是AJAX upload功能),任何想法有什麼不對嗎?

+0

Firebug(或類似的)顯示* actual *響應是什麼? (這是唯一重要的!) – 2011-09-22 17:46:06

+1

echo'htmlspecialchars(json_encode($ result),ENT_NOQUOTES);' 應該是'echo json_encode($ result);' – genesis

+0

onComplete函數中responseJSON的值是什麼? – BNL

回答

0

您是否從PHP中返回JSON數據時指定了正確的ContentType標頭? IE和Chrome不喜歡在錯誤的ContentType標頭下接收JSON。

如果不解決您的問題請嘗試使用此http://code.google.com/p/jquery-json/

var encoded = $.toJSON(responseJSON); 
var newBucket = $.evalJSON(encoded); 
alert(newBucket.client_id); 

編輯:上面的代碼中使用上述jQuery插件解析它之前序列化responseJSON。如果你不想使用jquery插件,你可以使用其他的替代方法來做同樣的事情。

+0

嘗試指定標題('Content-type:application/json');沒有去,如果我不需要,我更喜歡不再使用更多的庫或插件。 –