2014-06-24 66 views
0

我有一個方法發送ajax請求。當接收到來自服務器的應答我需要序列化和後來去序列化序列化和反序列化數組(沒有jQuery?)

$.ajax({ 
//..... 
done(function(data) { 

//1 Need to serialize data (which is an array) 


}); 

function myFunction() { 
    //2 Need to de-serialize data which has been serialized 

} 

我知道我可以使用jquery#serializeArray()如果我有一個形式連載:

$("form").submit(function(event) { 
    console.log($(this).serializeArray()); 
    event.preventDefault(); 
}); 

但我不有一個表格和服務器的數據(我猜)與serializeArray功能jquery無關。那我該怎麼做呢?什麼是最好的方法之一?

最好不要使用除jQuery之外的任何第三方庫,甚至不要使用jquery。

+0

我想讀['$ .ajax'](http://api.jquery.com/jQuery.ajax/)文檔幫助。 – Teemu

+0

@泰姆,不是。你的意思是我可以直接寫「數據」到一個html頁面,因爲它是? –

回答

1

將JS對象序列化爲JSON的常用方法是通過JSON.stringify()

相反的方法是通過JSON.parse()

o={"firstName":"john","lastName":"doe"}; 

console.log(JSON.stringify(o)); 
console.log(JSON.parse(JSON.stringify(o))); 

見MDN爲stringifyparse

這裏是一個Fiddle

.serializeArray()來自jQuery只是一個整潔的輔助函數來序列化表單數據。 它從頭開始構建它的對象。這是source。 如果你想提交您的數據JSON,您只需

$.ajax({ 
    type: "POST", 
    url: url, 
    data: JSON.stringify(data), 
    success: success, 
    dataType: dataType 
}); 

免費jQuery.post()後。

+0

我應該在哪裏將其序列化(當我在「完成」回調中收到數據時):轉換爲div或某個js變量? –

+0

序列化的需要是通過電線獲取JS對象。所以,如果你想把它發佈到服務器,你需要序列化它。如果你從服務器接收到它,它已經被序列化 - 假設你使用jQuery來完成這項工作。你只需要使用結果。當你收到這些數據時,這取決於你將如何處理它。 –

+0

我收到它,我想從.done(...)回調之外訪問結果,換句話說我想要傳遞結果。 –