多个ajax调用导致混合数据集

时间:2016-01-12 14:09:44

标签: javascript jquery ajax cordova jquery-mobile

我一直在开发一个手机应用程序,它使用jQuery Mobile作为它的主要结构。

当站点/应用程序运行时,它会执行许多ajax调用以获取应用程序的最新数据。例如,为主页收集项目列表,而为其他页面收集其他项目列表。

我发现的是,不时有数据混淆。

作为随机(但适用)示例:

查询1 - 获取人物的姓名和照片

查询2 - 获取城市/地点的名称和照片

在每个ajax调用中,我没有使用(data,status),而是将数据对象重命名为唯一标识符,希望这可以解决问题。

然后,在我的$ .each函数中,我确保迭代器也有一个不同的名称,所以代替(i,item)它可能是(i,personitem)和(i,cityitem)

问题

尽管我最好的尝试是让这些数据没有任何交叉的可能性,但我发现(与当前的例子一致) - 人们的照片将显示在城市页面上,以及城市的照片将显示在用户页面上。

这也是一个间歇性的问题。有时它根本不会发生,有时它会发生很多或只是一点点。

我希望我已经清楚地解释了自己。感谢先进的任何愿意帮助的人!我完全没有想法:-(

==================

更新

我的主要问题是,是否有人知道在此类查询中可能导致数据混淆的原因。

我的查询都是这样的:

$.ajax({
           url: 'get_cities.php?country='+country,
           dataType: 'jsonp',
           jsonp: 'jsoncallback',
           timeout: 5000,
           success: function(citydata, status){
           if(citydata.length == 0){
                $('#somediv').append('no data to show');
           }
           $.each(citydata, function(i,cityitem){
                var content = '<img src="'+cityitem.image+'" />'
                             +'<p>'+cityitem.name+'</p>';

                $('#somediv').append(content);
          }
});

1 个答案:

答案 0 :(得分:0)

此时我相信@ mason81的建议是正确的。

我删除了所有的:

jsonp: 'jsoncallback',

在我的代码中,然后更新我的PHP文件以使用

echo $_GET['callback'] . '(' . json_encode($records) . ');';

而不是

echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');';

我原本也放了&amp; callback =?进入我的URL,但是从阅读jQuery Ajax文档开始,只要您使用dataType:jsonp而不手动指定回调参数,它就应该自动为每个调用分配一个随机的唯一回调。

如果此操作失败,我仍然会认为这是正确的答案,我可能只需要通过并为每个请求分配唯一的回调参数,或者使用&amp; callback修改我的网址=?如上所述。

感谢大家的投入!