我正在编写一个与node.js服务器连接的jQuery应用程序,所以我想在任何地方传递JSON。
似乎jQuery的$.post(url, data, ...)
方法以URL编码形式发送其数据。即,{foo: true, bar: "baz"}
变为foo=true&bar=baz
,丢失了数据类型信息。
我可以让jQuery以JSON格式发送数据吗?或者我应该使用前$.post
'字符串来调用JSON.stringify
吗?
答案 0 :(得分:1)
简短的回答是jQuery不会为你做这件事。从jQuery soure拉出来:
// convert data if not already a string
if ( s.data && s.processData && typeof s.data !== "string" ) {
s.data = jQuery.param( s.data, s.traditional );
}
基本上如果数据不是一个字符串,jQuery将把它解析成一个就像你看到的那样。因此,如果您希望它是JSON进入服务器,那么您将不得不自己动手。我建议不要使用JSON.stringify,因为它不是跨浏览器。如果你有兴趣,这是我的“toJSON”函数:https://gist.github.com/884348
如果你愿意的话,你总是可以搞砸$ .ajax。我做得很好。
答案 1 :(得分:0)
我相信使用$ .post可能是你最好的选择。但是,如果您正在使用Node.js并且正在构建一个JavaScript密集型应用程序,我建议您检查Now.js以获取Node.js服务器和客户端代码之间的RPC调用。
使用Now.js和Node.js创建聊天应用程序有一个很好的例子。但是,如果您非常关注性能客户端,我不确定如何实现Now.js的内部。
<强>更新强>
以下是Now.js主页的链接:http://nowjs.com。 使用此框架,您的客户端和服务器端可以非常紧密地协同工作。