2016-11-10 77 views
0

我有我的PHP頁面這樣的數組命名new1.php:如何在AJAX響應中返回數組和HTML數據?

$arr = ['value 1', 'value 2', 'value 3']; 
$html = '<div>huge data with all tags like a page</div>'; 
$response = json_encode('array' => $arr, 'html' => $html); 
echo $response 

在調用頁面,當我console.log(data.html)它給undefinedconsole.log(data.array);也是如此。這裏是我的AJAX代碼:

$.ajax({ 
    url: "new1.php", 
    type: "POST", 
    data: { somedata: somedata }, 
    dataType: "text", 
    success: function(data) { 
     console.log(data); 
     console.log(data.html); 
     console.log(data.array); 
    } 
}); 

最重要的,我想知道的是返回與AJAX響應其他數據的網頁的最佳方式?

+6

'dataType:「text」,'change to'dataType:「json」,' – guradio

+0

@JonStirling,沒有語法錯誤 – EaB

+0

@guradio,如果我這樣做,我將能夠獲得HTML頁面或HTML內容 – EaB

回答

1

從你的PHP代碼,你就json_encode它添加到頁面頂部 header("Content-Type: application/json"); 那麼你的編碼應在數組作爲參數,而不是

json_encode(array("array"=>$arr, "html"=>$html));

應該看到你的記錄作爲JSON現在請從服務器狀態(jquery)從jQuery的智能猜測改變烏爾數據類型爲json它會自動德ËJSON代替

的dataType(默認:智能猜測(XML,JSON,腳本或HTML)) 類型:String 的類型,你期望從服務器返回的數據。如果沒有指定,jQuery將嘗試根據響應的MIME類型推斷它(XML MIME類型將生成XML,在1.4中JSON將生成一個JavaScript對象,在1.4腳本中將執行該腳本,而其他任何東西都將作爲字符串返回)。可用類型(以及作爲成功回調的第一個參數傳遞的結果)爲:

+0

如果我這樣做,我可以得到HTML頁面或HTML內容? – EaB

+0

是的,與任何內容的數據。*格式,或現在'console.log('我的數據',數據),它會被記錄爲JSON對象,你可以看到孩子們和他們的內容 –

+0

好吧,我會嘗試 – EaB

2

你應該JSON解析,因爲你是從PHP文件的JSON編碼,並且因爲有你的Ajax的數據類型是文本,所以你需要解析JSON。

$.ajax({ 
     url:"new1.php", 
     type:"POST", 
     data:{somedata:somedata}, 
     dataType:"text", 
     success: function(data){ 
       data = JSON.parse(data); 
        console.log(data); 
       console.log(data.html); 
       console.log(data.array); 

      } 
    }); 
+2

雖然此代碼片段可能會解決問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! –

+0

感謝羅裏將記住這一點 – Jigar7521

+0

它給錯誤,如解析錯誤:語法錯誤,意外「= >」(T_DOUBLE_ARROW)在 – EaB