0

AJAX 调用返回的数据格式如下

{
  "items" : {
    "Phones" : "PhoneSelect",
    "NoteBooks" : "notebookSelect",
    "Tablets" : ""
  },
  "title" : "What would you like to purchase?",
  "defaultText" : "Choose a product category"
}

AJAX 调用

function fetchSelect (val) {
  $.getJSON('ajax.php', {key:val}, function(r) {
  $.each(r.items, function (k, v) {

根据 jQuery 规范.getJSON

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});
  1. 我的问题是{key:val}从通话中返回的数据,然后r里面是什么function(r)

  2. 我看到函数 pass in val,但关键值是什么{key:val}

4

3 回答 3

2

{key:val}实际上是在 AJAX 调用中发送到服务器的内容。

r参数是从 AJAX 调用返回的数据。数据作为参数返回到您的回调函数中。

查看文档中的函数签名,我们可以看到每个参数应该是什么 -

jQuery.getJSON( url [, data] [, success(data, textStatus, jqXHR)] )

  • url - 包含请求发送到的 URL 的字符串。
  • 数据 -随请求发送到服务器的映射或字符串。
  • success(data,textStatus, jqXHR) - 请求成功时执行的回调函数。

您的r参数data正在返回给success回调。在您的情况下,它是 JSON 对象。

于 2012-10-08T23:59:37.710 回答
1
{key:val} // The data sent to the server

r 包含您的回调结果

r.items.Phones  // PhoneSelect
r.items.NoteBooks // notebookSelect
于 2012-10-09T00:00:59.113 回答
0

当你调用 $.getJSON 时,它需要三个参数 1. Url 2. INut Data 3. 回调函数。因此,您的问题的答案是,当 ajax 调用完成时,jQuery 将调用代替 function(R) 传递的函数,其中 R 是服务器对 ajax 调用的响应。

于 2012-10-09T00:01:47.303 回答