我有一个javascript对象,我需要能够通过查询字符串传递给Web服务。
比如说:
<script type="text/javascript">
var test = new Object();
test.date = new Date();
test.str = "hello world!";
test.list = new Array();
test.list.push('a');
test.list.push('b');
test.list.push('c');
</script>
有没有办法可以将该对象序列化为JSON,然后以某种方式对其进行压缩/编码,然后将其传递给url的查询字符串?
像:
var destination = 'http://mywebservice?'+encode(serialize(test));
$.get(destination, function(e)) { ... }
提前致谢
答案 0 :(得分:8)
你想要Douglas Crockford的json2.js:https://github.com/douglascrockford/JSON-js
var test = new Object();
test.date = new Date();
test.str = "hello world!";
var dest = 'http://mywebservice?'+encodeURIComponent( JSON.stringify(test) );
(哦,不要使用escape(),不推荐使用。总是使用encodeURIComponent())
但为什么不使用(会话)cookie呢?使用URI传递数据可能是SEO,书签,链接等的主要问题。
答案 1 :(得分:5)
你应该记住查询字符串有最大长度(wiki说它是2083个字符),所以你必须小心地放置太大的对象。
答案 2 :(得分:-1)
使用标准的JSON stringify()
方法:
var destination = encodeURI('http://mywebservice?obj='+ JSON.stringify(test));
答案 3 :(得分:-1)
我认为你只需要jQuery post功能:
http://api.jquery.com/jQuery.post/
它会向服务器执行数据发布。在我看来,POST更适合发送对象,但我忽略了您在服务器上可能存在的限制。