使用jQuery .load()仅接收图像的字节码

时间:2013-10-25 14:29:10

标签: javascript jquery html ajax dom

我使用jQuery .load()接收加载图像的字节码。

是吗

  1. 因为没有指定MIMEType?
  2. 因为我使用的图片网址没有文件扩展名?
  3. 因为我必须以某种方式包装整件事?
  4. 以下是一些示例代码:

    HTML

      <div class="slide" data-img-src="http://lorempixel.com/200/100/technics/">
        <div class="slide-content">
          <h1>Heading 1</h1>
          <p>Just some random text for demonstration purposes.</p>
        </div>
      </div>
    
      <div class="slide" data-img-src="http://lorempixel.com/200/100/nature/">
        <div class="slide-content">
          <h1>Heading 1</h1>
          <p>Just some random text for demonstration purposes.</p>
        </div>
      </div>
    

    的Javascript

    var ajax_load = "<img src='img/load.gif' alt='loading...' />";
    
    $(".slide").each(function(index, el) {
        var img_src = $(this).attr('data-img-src');
    
        $(this).prepend(ajax_load);
        $(this).load(img_src, null, function() {
            console.log(img_src + " loaded");
        });
    });
    

    小提琴http://jsfiddle.net/BCLJE/

2 个答案:

答案 0 :(得分:2)

您需要确保您尝试检索的数据或HTML片段位于同一个域中。由于同源政策

http://en.wikipedia.org/wiki/Same_origin_policy

  

由于浏览器安全限制,大多数“Ajax”请求都遵循相同的原始策略;请求无法从其他域,子域或协议成功检索数据。

加载() API缩写方法的附加说明

http://api.jquery.com/load/

答案 1 :(得分:1)

如果您尝试将图像的内容(通过AJAX加载,不能少)设置为只接受文本的字段,那么我期望会发生这种情况。如果要使用图像本身替换这些元素的内容,请创建具有正确<img>属性的src元素:

var $img = $('<img/>', {src: img_src}).load(function(e) {
    // do something when the image has actually loaded?
});
$(this).empty().append($img);

jsFiddle demo