JSONP Ajax 调用无法并行工作
JSONP Ajax calls not working parallel
我有 Node.js 服务器和 jQuery ajax 请求。
这个有效:
api(config.categoriesURL, success, config.err1);
setTimeout(function () {
api(config.randomURL, success1, config.err2);
},300);
但事实并非如此:
api(config.categoriesURL, success, config.err1);
api(config.randomURL, success1, config.err2);
控制台输出如下:
url: http://localhost:3000/categories/?callback=myCallback&_=1431726147454
url: http://localhost:3000/random/?callback=myCallback&category=55564cc42e366b34aa9a529d&callback=myCallback&_=1431726147455
responseText: undefined
status: 200
text status: parsererror
error: Error: myCallback was not called'
这是服务器端还是客户端的问题?知道为什么会发生这种情况以及我应该如何解决它吗?这是正常行为吗?
这里有更多代码:
main.js
$(document).ready(function() {
var api = require('./api'),
config = require('./config');
function success (data) {
data.forEach(function (category) {
var div = document.createElement('div');
div.id = category._id;
div.textContent = category.name;
$('.container').append(div);
});
}
function success2 (data) {
console.log(data);
}
api(config.categoriesURL, success, config.err1);
api(config.randomURL, success2, config.err2);
});
api.js
function api(url, success, error) {
$.ajax({
type: 'GET',
url: url,
beforeSend: function (jqXHR, settings) {
console.log('url: ' + settings.url);
},
jsonpCallback: 'myCallback',
dataType: 'jsonp',
success: success,
error: error
});
}
module.exports = api;
您应该尝试删除:
jsonpCallback: 'myCallback',
您正在同时进行两个 JSONP ajax 调用,它们对回调函数使用相同的名称。我认为那会是个问题。
如果去掉jsonpCallback
设置,jQuery会随机生成回调函数名
我有 Node.js 服务器和 jQuery ajax 请求。
这个有效:
api(config.categoriesURL, success, config.err1);
setTimeout(function () {
api(config.randomURL, success1, config.err2);
},300);
但事实并非如此:
api(config.categoriesURL, success, config.err1);
api(config.randomURL, success1, config.err2);
控制台输出如下:
url: http://localhost:3000/categories/?callback=myCallback&_=1431726147454 url: http://localhost:3000/random/?callback=myCallback&category=55564cc42e366b34aa9a529d&callback=myCallback&_=1431726147455 responseText: undefined status: 200 text status: parsererror error: Error: myCallback was not called'
这是服务器端还是客户端的问题?知道为什么会发生这种情况以及我应该如何解决它吗?这是正常行为吗?
这里有更多代码:
main.js
$(document).ready(function() {
var api = require('./api'),
config = require('./config');
function success (data) {
data.forEach(function (category) {
var div = document.createElement('div');
div.id = category._id;
div.textContent = category.name;
$('.container').append(div);
});
}
function success2 (data) {
console.log(data);
}
api(config.categoriesURL, success, config.err1);
api(config.randomURL, success2, config.err2);
});
api.js
function api(url, success, error) {
$.ajax({
type: 'GET',
url: url,
beforeSend: function (jqXHR, settings) {
console.log('url: ' + settings.url);
},
jsonpCallback: 'myCallback',
dataType: 'jsonp',
success: success,
error: error
});
}
module.exports = api;
您应该尝试删除:
jsonpCallback: 'myCallback',
您正在同时进行两个 JSONP ajax 调用,它们对回调函数使用相同的名称。我认为那会是个问题。
如果去掉jsonpCallback
设置,jQuery会随机生成回调函数名