jquery $ .post第二个参数。 - json或查询字符串?

时间:2010-08-23 11:48:03

标签: jquery ajax json query-string

$.post('somescript.php', { data: $('#myInputField').val() },
    function(replyData) {

1) 这是$ .post方法的第二个参数 - 在json?

OR

2) 这个$ .post方法的第二个参数是查询字符串吗?

提前致谢, MEM

注意:如果这个问题没有意义,请知道为什么(它没有意义)也可以提供帮助,并且也可以作为有效答案。

1 个答案:

答案 0 :(得分:2)

一般情况下,这两种方式都非常接近。函数$.post$.ajax将以相同的方式对发布的数据进行编码。如果您想发布JSON数据,您应该另外使用某些JSON编码器对数据进行编码。请参阅How do I build a JSON object to send to an AJAX WebService?作为示例($.post$.ajax的缩写形式,因此$.ajax所描述的所有内容都适用于$.post

$.post('somescript.php', { data: JSON.stringify($('#myInputField').val()) }, ...);

在上面的代码中,我使用http://www.json.org/js.html中的JSON.stringify

更新:在评论中提出问题之后,我希望我能了解更多您想了解的内容。因此,jQuery.post 不会为您生成任何JSON数据编码 for和输入参数(jQuery.post的第二个参数)。因此它始终以完全相同的方式发送数据。您可以向dataType调用添加其他“json”参数(最后$.post参数),但这不会更改数据的编码方式。

问题“我应该将JSON数据发送到服务器吗?”在$.post上是独立的,您应该根据项目中存在的要求自己回答问题。有时候这是解决方案架构的问题。有时你必须选择一种特殊方式。

例如,对于Microsoft ASMX Web Service,存在一些重要的限制。例如,您希望从Web服务提供JSON数据,以便能够轻松使用JavaScript中的数据。所以你想在服务器端有一个方法,它有一些输入参数并返回JSON作为输出。如果ASMX Web服务必须将所有输入参数作为JSON编码数据发送到Web服务方法,以便能够从Web服务返回JSON数据,但ASMX Web服务为您解码/编码数据并且您不需要在服务器端手动编码/解码JSON。