0

我正在用 jquery $.ajax 解析生成的 json,但是有一个我不明白的选项。我在一些例子中看到了它,并试图在 jquery.com 上寻找,但仍然不确定:

这个选项是:

data: { get_param: 'value' }

像这样使用:

$.ajax({ 
                type: 'GET', 
                url: 'http://example/functions.php', 
                data: { get_param: 'value' }, //why we shell use that in that case?
                success: function (data) { 
                                    var names = data
                    $('#cand').html(data);
                }
          });

我知道“数据: ”是发送到服务器但解析 JSON 我认为我不发送而是从具有 GET 类型的服务器检索的内容。在这种情况下,下一部分“ get_param:'value' ”对我来说也没有意义,谁能解释一下何时、何地以及在什么情况下使用它?

谢谢你。

4

2 回答 2

2

我知道“数据”是发送到服务器的

是的。如果data是一个对象,它会被序列化为一个application/x-www-form-urlencoded字符串,然后根据请求类型 (GET/POST) 放置在查询字符串或请求正文中。

jQuery 完成了所有必要的转义。

[](默认情况下,它还通过添加键名将嵌套数据结构(您的示例中没有)折叠成 PHP 样式)。

但解析 JSON

不涉及 JSON(除非服务器响应一些)。

何时何地以及在什么情况下使用它

每当您想将数据传递给服务器而不是请求静态 URI 时。

于 2012-11-06T11:24:54.290 回答
1

您不发送 JSON(通常),您发送简单的 GET 或 POST HTTP 参数。它们通常以对象文字形式提供给ajax方法,但您也可以使用 string "getparam=value"。如果您提供一个对象,jQuery 将为您进行参数序列化和 URL 编码 - 它们以x-www-form-urlencoded.

文档中引用:

数据( Object, String)

要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。它附加到 GET 请求的 url。请参阅 processData阻止此自动处理的选项。对象必须是键/值对。如果 value 是一个数组,jQuery 根据设置的值序列化多个具有相同键的值traditional

于 2012-11-06T11:25:28.090 回答