📜  $.post jquery beforesend loader - Javascript (1)

📅  最后修改于: 2023-12-03 15:29:05.871000             🧑  作者: Mango

使用$.post和jQuery beforeSend添加加载器 - JavaScript

在Web应用程序中,我们经常需要向服务器发送数据并从服务器获取响应。使用jQuery的$.post方法可以轻松地与服务器通信,而添加beforeSend选项可以添加一个简单的加载器来提示用户正在进行请求。

什么是$.post方法?

$.post是一个jQuery.ajax()的简化方法,用于向服务器发起POST请求并获取响应。它具有以下语法:

$.post(url, data, success, dataType);

其中,

  1. url:需要发送请求的URL地址
  2. data:要发送的数据
  3. success:当请求成功时要执行的回调函数,通常用于处理返回的数据
  4. dataType:响应数据的数据类型。默认情况下,jQuery会根据响应的MIME类型猜测数据类型。
什么是beforeSend选项?

beforeSend选项是jQuery ajax()方法的一个选项,该选项用于在发送一个Ajax请求之前运行一个函数。它可以用于检查或修改请求参数,或添加某些内容,如一个简单的加载器。

beforeSend回调函数带有3个参数:

beforeSend:function(xhr){
  xhr.setRequestHeader('X-CSRF-TOKEN', $("#csrf-token").attr("content"));
}
如何使用它们来添加一个加载器?

以下是添加一个基本加载器的示例代码:

$.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" },
  beforeSend: function() {
    $('#loader').show();
  },
  success: function(data) {
    alert("Data Loaded: " + data);
  },
  dataType: "json"
});

在上面的代码中,我们使用jQuery的ajax()方法来发送POST请求,并添加了beforeSend选项。在beforeSend回调函数中,我们选择加载器元素并使用show()方法来显示它。在请求成功后,我们使用success回调函数来处理响应数据。

以下是添加加载器后的样式代码:

#loader {
  position: fixed;
  left: 0px;
  top: 0px;
  width: 100%;
  height: 100%;
  z-index: 9999;
  background-color: rgba(255, 255, 255, 0.8);
  background-image: url('loader.gif');
  background-repeat: no-repeat;
  background-position: center;
}

在上面的代码中,我们选择要在加载器中使用的背景图像,并使用CSS将其放置在屏幕中心。然后,我们添加了一个半透明的白色背景,以确保图像易于查看。

如何使用jQuery自带的Loader?

jQuery UI附带了一个可以用于在网页上添加自定义加载器的Loader工具。它是一个小而快速的JavaScript库,可以根据特定的需求来修改。

下面是一个使用jQuery UI的加载器的示例:

$.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" },
  beforeSend: function() {
    $('#loader').show();
  },
  success: function(data) {
    alert("Data Loaded: " + data);
  },
  dataType: "json"
});

$('#loader').addClass("ui-widget-overlay");
$('#loader').addClass("ui-front");
$('#loader').html("<div class='ui-dialog ui-widget ui-widget-content ui-corner-all ui-front'><div class='ui-dialog-content ui-widget-content' style='background-color:transparent;border:none;'><div class='ui-progressbar'></div><p>Loading...</p></div></div>");
$('#loader .ui-progressbar').progressbar({value:false});

在上面的代码中,我们使用了jQuery UI中的progressbar小部件来展示加载状态,同时还包含了一个提示消息。