javascript - 为什么传递数据对象时第一个 $.ajax 会出错?

标签 javascript jquery ajax

我不确定为什么第一个 $.ajax() 错误。我正在尝试将 url 参数作为 ajax 数据属性的一部分传递。

这是一个 fiddle ,可以看到第一个ajax调用失败而第二个调用成功:http://jsfiddle.net/f9e5Y/

这是 JavaScript:

var urlParameters = {
  page: 1,
  api_key:'...',
  tags: 'kittens',
  method: 'flickr.photos.search',
  per_page: 3,
  format: 'json',
  jsoncallback: '?'
};

$.ajax({
  url: 'http://api.flickr.com/services/rest',
  type: 'GET',
  dataType: 'json',
  data: urlParameters,
  success: function (data) {
    console.log('ajax 1 - success');
    console.log('data');
  },
  error: function () {
    console.log('ajax 1 - error');   
  }
});

$.ajax({
  url: 'http://api.flickr.com/services/rest/?page=1&api_key=...&tags=kitten&method=flickr.photos.search&per_page=3&format=json&jsoncallback=?',
  type: 'GET',
  dataType: 'json',
  success: function (data) {
    console.log('ajax 2 - success');
    console.log(data);
  },
  error: function () {
    console.log('ajax 2 - error');   
  }
});

最佳答案

我假设 jQuery 仅扫描原始 URL 中的 callback=? 模式,以生成并插入随机函数名称,而不是从 data 构建的 URL。

因此,您实际上要查找的是 data: 'jsonp' 并通过 jsonp: 'jsoncallback' 设置回调参数 name:

var urlParameters = {
  page: 1,
  api_key: '...',
  tags: 'kittens',
  method: 'flickr.photos.search',
  per_page: 3,
  format: 'json'
};

$.ajax({
  url: 'http://api.flickr.com/services/rest',
  type: 'GET',
  dataType: 'jsonp',
  data: urlParameters,
  jsonp: 'jsoncallback',
  success: function (data) {
    console.log('ajax 1 - success');
    console.log('data');
  },
  error: function () {
    console.log('ajax 1 - error');   
  }
});

关于javascript - 为什么传递数据对象时第一个 $.ajax 会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24092963/

相关文章:

php - 带有 IE 9 的 jQuery $.ajax POST 请求结果为空数组

javascript - jQuery Ajax : Variable as Header key

javascript - 如何在 Rails 中使用 jquery tokeninput?

javascript - 如何确定变量是否未定义

javascript - $.ajax 中的成功不会被执行

javascript - ajax 成功函数不适用于数据表

javascript - 字符串超过 maxJsonLength 且小于 250kb

javascript - 这两种命名空间方法有什么区别?

javascript - 无法读取未定义的属性 'encrypt'

javascript - 通过原型(prototype)和事件访问函数变量