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会随机生成回调函数名