同步加载HTML内容

时间:2017-02-28 10:37:38

标签: javascript jquery html asynchronous

我需要在div中加载HTML。

$("#content").load("content.html");
$("#myText").html("Prasath");

之后我需要更新div(id='myText')中的一些文字,这些文字可以在" content.html"中找到。 " content.html"包含大量数据,因此加载需要一些时间。在此之前执行此行:

$("#myText").html("Prasath");

如何从JavaScript / jQuery同步加载HTML内容? 我不想在加载回拨选项中执行此操作。

3 个答案:

答案 0 :(得分:3)

您无法同步加载它,但您可以轻松地在load()回调中执行下一个任务。例如:

$("#content").load("content.html", function() {
    $("#myText").html("Prasath");
});

答案 1 :(得分:1)

$("#content").load("content.html", function(data){
    // this will execute after load is fired.
});

使用回调。

编辑:如果您确实想要发出同步请求,可以使用以下代码。但是,正如我之前在评论中提到的那样,您将在控制台中收到警告:

var data = $.ajax({
        type: "GET",
        url: "content.html",
        async: false
    }).responseText;
// this code waits for the above ajax request.

答案 2 :(得分:1)

请查看关于load()的{​​{3}}。

您可以将回调函数传递给load()

例如:

$("#content").load("content.html", function(){
    $("#myText").html("Prasath");
});

编辑:无法让load()同步加载内容。解决方法是您可以定义一个Jquery函数,该函数使用JQuery documentation向目标URL发送同步请求,然后将响应内容设置为destinate div。

$(function(){

  $.fn.extend({
      syncLoad: function (url) {

         var result = $.ajax({
          url: url,
          async: false,
          type: "GET"
         }).responseText;

         $(this).html(result);

      }
  });

  $("#content").syncLoad("/echo/js/?js=hello%20world!");

});

JS小提琴:ajax()