【问题标题】:jQuery ajax() preloading multiple thingsjQuery ajax() 预加载多个东西
【发布时间】:2011-04-01 09:32:00
【问题描述】:

我正在使用以下代码来预加载 mp3:

$.ajax({
    url: "boom.mp3",
    success: function() {
        //done
    }
});

我是否可以预加载多个元素(例如图像和 mp3)?

例如

$.ajax({
    url: "boom.mp3", "moo.jpg",
    success: function() {
        //done
    }
});

干杯!

【问题讨论】:

  • 在最后一个代码块中,你的意思是url: ["boom.mp3", "moo.jpg"],吗?
  • @rxgx:我认为这纯粹是 OP 试图实现的一个例子。

标签: javascript jquery preloading


【解决方案1】:

如果您使用的是 jQuery 1.5,有两种新方法可以处理这个问题:deferred 和 promises。

Creating Responsive Applications Using jQuery Deferred and Promises

function successFunc(){
  console.log( “success!” );
}    

function failureFunc(){
  console.log( “failure!” );
}

$.when(
  $.ajax( "/main.php" ),
  $.ajax( "/modules.php" ),
  $.ajax( "/lists.php" )
).then( successFunc, failureFunc );

例如,要在您的实例中使用它,只需将 ajax 请求替换为 load

【讨论】:

    【解决方案2】:

    我的一个想法:收集数组中的所有文件名并循环遍历数组。将接收到的对象保存在另一个数组中,然后根据需要使用它。

    如果你在 url 参数中定义对象,用冒号分隔,也许它会起作用。

    【讨论】:

      【解决方案3】:
      <script>
      $.ajax({
          type:"GET",
          url:'',
          dataType:'json',
          async:false,
          beforeSend:function(data){ // Are not working with dataType:'jsonp'
            $('#content').html('Loading...');
          },
          success:function(data){
              $('#content').html(data.content);
          }
      });
      </script>
      

      阅读beforeSend(jqXHR, settings)

      【讨论】:

      • 所以,我读到了……你到底在说什么?我必须在“beforeSend”中运行另一个ajax() 请求吗?这似乎远远不够。
      • 我只是显示文本loading..。直到 ajax 完成
      • 是的,但我的问题不是这样 :)
      • 首先你的代码是错误的url: "boom.mp3", "moo.jpg",不是预加载的东西。 url 是一个包含请求发送到的 URL 的字符串。
      • 我知道,这是一个例子 - 因此例如:)
      猜你喜欢
      • 1970-01-01
      • 2018-03-25
      • 2021-10-21
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      相关资源
      最近更新 更多