2014-06-24 70 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(...)回调之外访问结果,换句话说我想要传递结果。 –