Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对两个ajax()请求使用相同的回调会产生;parsererror";_Javascript_Jquery_Json - Fatal编程技术网

Javascript 对两个ajax()请求使用相同的回调会产生;parsererror";

Javascript 对两个ajax()请求使用相同的回调会产生;parsererror";,javascript,jquery,json,Javascript,Jquery,Json,所以,我已经和Javascript斗争了一段时间,我有一个奇怪的错误,可能是一些简单的错误。我有一个ajax请求,如下所示: $.ajax({ url: 'http://www.hahaha.com/api/v3/acts', crossDomain: true, jsonpCallback: 'handlejson', async: false, jsonp: 'callback', dataType: 'jsonp', type: 'G

所以,我已经和Javascript斗争了一段时间,我有一个奇怪的错误,可能是一些简单的错误。我有一个ajax请求,如下所示:

$.ajax({
    url: 'http://www.hahaha.com/api/v3/acts',
    crossDomain: true,
    jsonpCallback: 'handlejson',
    async: false,
    jsonp: 'callback',
    dataType: 'jsonp',
    type: 'GET',
    success: handleActs,
    error: handleError
});
它工作正常,调用回调没有问题。现在,如果我直接在下面添加此请求:

$.ajax({
    url: 'http://www.hahaha.com/api/v3/performances',
    crossDomain: true,
    async: false,
    jsonpCallback: 'handlejson',
    jsonp: 'callback',
    dataType: 'jsonp',
    type: 'GET',
    success: handlePerformances,
    error: handleError
});

我在第一个请求上得到一个“parserrror”,第二个请求成功。有人知道它为什么这样做吗?jsonpCallback是否只能调用一个请求?

我认为两个AJAX调用引用同一个
jsonpCallback
——我认为jQuery将回调函数放在全局名称空间中,然后在调用时将其删除——这样就不会出现第二组加载的数据。如果将
async
设置为
false
,我不会想到这会有什么问题,但看起来确实如此

起初,我无法理解您设置
jsonpCallback
的原因,但测试似乎表明您使用的API从回调名称中除去了
[a-z]
之外的任何内容:(.因此,您可以在第一次调用中将
jsonpCallback
设置为
'handlejsona'
并在第二次调用中将
'handlejsonb'
时尝试此操作


这种方法在这里似乎有效:

你确定ist请求返回json吗?我使用的是Chrome开发者工具,两个请求都返回有效的json,只有在我添加第二个请求时才会发生解析器错误调用顺序颠倒会有什么不同吗?例如,第二个请求仍然失败,还是调用
/性能
导致错误的原因是什么?奇怪……如果我反转它们,handlejson函数不会在/acts上调用,但数据仍会发送到handleActs。当/performances完成时,调用handlejson函数并将数据发送到handlePerformances。\我的一位同事证实了这一点-不能对两个不同的函数使用相同的回调租用ajax请求。例如,Angular JS为每个请求创建一个唯一的回调。