我需要通过查询字符串传输javascript对象

时间:2011-03-01 22:39:41

标签: javascript jquery json cross-domain

我有一个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)) { ... }

提前致谢

4 个答案:

答案 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更适合发送对象,但我忽略了您在服务器上可能存在的限制。