我不确定为什么会出现第一个$.ajax()
错误。我试图将url参数作为ajax数据属性的一部分传递。
这是一个小提琴,看到第一个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');
}
});
答案 0 :(得分:1)
我假设jQuery仅扫描callback=?
模式的原始URL,以生成并插入随机函数名称,而不是它从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');
}
});