2011-11-10 77 views
1

一些奇怪的事情正在發生,我的AJAX請求正在返回一個數組,但整個事情本身就是一個字符串。AJAX請求返回某種形式的長字符串

這基本上概括起來:

PHP

$item = array(); 

$item[] = array(
    'title'  => 'awesome title', 
    'permalink' => 'some url' 
); 

json_encode($item); 

jQuery的

$.ajax({ 
    type: 'post', 
    url: ajaxurl, 
    data: { 
     action: 'a_grid_callback', 
     type: method 
    }, 
    success: function(msg) { 
     console.debug(msg); 
    } 
}); 

調試返回此:

[{"title":"awesome title","permalink":"some url"}]0 

如果我要做alert(msg.length)我會得到一個等於上面代碼長度的長數字。

+0

嘗試設置'dataType:json'看起來像br owser正在將響應解釋爲一個字符串。 –

+0

我已經嘗試過了,我根本沒有迴應:/ – daryl

+0

由於一些奇怪的原因,現在它已經工作了。這一切都是由於熬夜近48小時的影響!把它寫成答案,你會得到答案。 – daryl

回答

1

嘗試設置dataType: 'json'貌似瀏覽器解釋響應爲字符串。

1
$item = array(
    'title'  => 'awesome title', 
    'permalink' => 'some url' 
); 

json_encode($item); 


// Add exit here 
exit; 
+0

沒有效果,我編輯了問題並顯示圖像。 – daryl

+0

謝謝,我相信這可能與爲什麼'dataType:'JSON''沒有工作得更早,我忘了退出/死亡。 – daryl

1
$.ajax({ 
    type: 'post', 
    url: ajaxurl, 
    data: { 
     action: 'a_grid_callback', 
     type: method 
    }, 
    success: function(msg) { 
     eval("data="+msg); 
     var title = data.title; 
     console.debug(title); 
    } 
}); 
0

非關聯數組輸出數組

你必須做這樣的事情

json_encode($item, JSON_FORCE_OBJECT) 

或本

$item[foo] = array(
    'title'  => 'awesome title', 
    'permalink' => 'some url' 
); 

或本

$item = array(
    'title'  => 'awesome title', 
    'permalink' => 'some url' 
);