我的ajax函数在获取图像方面有什么问题?

时间:2014-05-31 14:53:49

标签: javascript jquery ajax

我每5秒轮询S3一张图片。我的轮询成功,我可以看到它在Web检查器中获取带有图像的URL。但是done()内部的函数没有执行(我看不到任何记录到控制台的内容):

  (function poll() {
    setTimeout(function () {
      userId = $('#photo').data('user-id');
      photoPath = $('#photo').data('photo-path');
      $.ajax({
        type: 'GET',
        dataType: 'json',
        url: 'http://s3.amazonaws.com/my_bucket/user-photos/'+userId+'/original/'+photoPath,
        done: function (data) {
          console.log(data);
          $("#photo").append(data);
        },
        complete: poll
      });
    }, 5000);
  })();

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您要求dataType: 'json',但由于服务器正在发送图片,您无法获得回复。

您想要在$('#photo')显示图片吗?

 (function poll() {
    setTimeout(function () {
      console.log('polling');
      userId = $('#photo').data('user-id');
      photoPath = $('#photo').data('photo-path');
      $('<img>').on('load', function(){
          $('#photo').empty().append(this);
          poll();
      }).prop('src', 'http://s3.amazonaws.com/my_bucket/user-photos/'+userId+'/original/'+photoPath);
    }, 5000);
  })();

Demo(图片路径被jsfiddle徽标替换)