【问题标题】:GetJSON returns data asyncronouslyGetJSON 异步返回数据
【发布时间】:2014-10-29 21:06:28
【问题描述】:

我正在使用此代码从数据库中获取数据

    var ourData ='';
    $.getJSON('getGaleri.php',function(data){
        ourData =data;

    });
    //alert('loading');


    });
    html = html + '</ul></div></div>';
    setTimeout(function(){
$.each(ourData, function(i, item) {
        html = html +"<li class='modern konserler'><a href='"+path+ourData[i].resim_banner+"' rel='bookmark' class='fancybox'><img src='"+path+ourData[i].resim_banner+"' alt='ThemeMarket' /><div><span></span></div></a></li>";
        $('#content').html(html);
    }, 4000);

要让它工作,我需要取消注释第四行 alert() 并让 ourData 填充数据, 如果我不评论它,它不会给出任何东西,ourData 将是空字符串,我认为使用 setTimeout 会有所帮助,但它没有,

如何解决它,这样我就不需要alert() 来获取填充到ourData 变量中的数据

【问题讨论】:

  • 嗯,是的,但更准确地说,getJSON 异步返回数据。
  • 你可以这样尝试 $.getJSON('getGaleri.php',function(data){ ourData =data; $.each(ourData, function(i, item) { html = html +" "; }); html = html + '
    '; });或尝试在成功回调中

标签: jquery ajax getjson


【解决方案1】:

这是因为alert 在填充了警报ourData 之后将线程阻塞了足够长的时间以使getJSON 完成。在回调中使用您的each

$.getJSON('getGaleri.php',function(data){

    $.each(data, function(i, item) {
        html = html +"<li class='modern konserler'><a href='"+path+data[i].resim_banner+"' rel='bookmark' class='fancybox'><img src='"+path+data[i].resim_banner+"' alt='ThemeMarket' /><div><span></span></div></a></li>";

    });

});

【讨论】:

  • 有什么错误吗?你在回调中使用过data[i]ourData[i] 吗?
  • 使用了数据[i],但还是一样,没有数据返回
  • 在您的$.getJSON('getGaleri.php',function(data){ 中添加console.log(data) 以确保您正在获取数据。还要确保它是$.each(data 而不是$.each(ourData。如果您从服务器获取正确的数据,此代码应该可以工作。
  • 添加它,获取数据然后在控制台打印
猜你喜欢
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 2015-06-09
  • 2020-03-21
  • 2016-11-25
相关资源
最近更新 更多