2014-01-29 65 views
0
var urlArray = window.location.pathname.split("/"), 
    idFromUrl = urlArray[2], 
    dataPath = "/bulletins/" + idFromUrl + "/data"; 

$.ajax({ 
    url: dataPath, 
    type: "get", 
    dataType: "html", 
    success: function (data) { 
     var dataObj = data.replace(/"/g, '"'); 

     console.log(dataObj); 
    } 
}); 

我抓住HTML頁面的內容,並且該頁面上的內容非常簡單。它只是一個「數組」,儘管它是純文本的,所以當它返回時,JavaScript將它視爲字符串而不是數組。這一切就是這樣的HTML頁面:

[{"sermontitle":"test","welcome":"test","_id":"52e7f0a15f85b214f1000001"}] 

沒有更換"的,一個console.log吐出[{"sermontitle":"test","welcome":"test","_id":"52e7f0a15f85b214f1000001"}]

所以我的問題是,我怎麼可以反過來說,HTML字符串(這已在「陣列「形式)到一個實際的數組?

+0

爲什麼響應與"? –

+0

您是如何從HTML頁面獲得該信息的?你如何擁有一個'數組'?它看起來像'JSON',除了'[]'。 'JSON'具有很強的語法。我會嘗試去除'[]'然後''json.parse()'它。 – loveNoHate

+0

@dollarvar我從HTML頁面獲取,因爲我有點黑客使用Jade構建的Node視圖只將所有數據轉儲到空白頁面上。無法弄清楚如何使用Jade模板以動態方式創建JSON文件。 –

回答

1

您可以解析返回的HTML片段JSON:

JSON.parse(dataObj); 
1

更改「數據類型」爲「JSON」,它會將其轉換爲你:

var urlArray = window.location.pathname.split("/"), 
    idFromUrl = urlArray[2], 
    dataPath = "/bulletins/" + idFromUrl + "/data"; 

$.ajax({ 
    url: dataPath, 
    type: "get", 
    dataType: "json", 
    success: function (data) { 
     console.log(data); 
    } 
}); 

如果返回"代替",然後我會改變AJAX返回頁面,以確保它是做一個適當的JSON響應。

+0

是的,我試過但沒有運氣。它只是沒有返回。我認爲這是因爲它實際上不是一個JSON文件。 –

+0

你用過在文件中放入JSON頭文件嗎? –

2

您可以使用JSON.parse

JSON.parse(dataObj); 
+0

我不小心點了刪除,太糟糕了:-) – Hellgorithm

相關問題