首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery是否应该使用多个ajaxStart/ajaxStop处理

jQuery是否应该使用多个ajaxStart/ajaxStop处理
EN

Stack Overflow用户
提问于 2009-06-30 05:52:14
回答 2查看 23.5K关注 0票数 18

也许没有区别,但其中一种方式比另一种方式更好(或者可能有一种神秘的“第三种”方式比两种方式都好!)

首先:

代码语言:javascript
复制
var startTime;

$(document).ready(function() {

    $("#lbl_ajaxInProgress").ajaxStart(function() {
        // store the current date/time...
        startTime = new Date();
        // update labels
        $(this).text('Yes');
        $("#lbl_ajaxCallTime").text("-");
    });

    $("#lbl_ajaxInProgress").ajaxStop(function() {
        // update labels
        $(this).text('No');
        $("#lbl_ajaxCallTime").text(myFunctionThatCalculatesTime(startTime));
    });

});

第二:

代码语言:javascript
复制
var startTime;

$(document).ready(function() {

    $("#lbl_ajaxInProgress").ajaxStart(function() {
        // update labels
        $(this).text('Yes');
    });

    $("#lbl_ajaxInProgress").ajaxStop(function() {
        // update labels
        $(this).text('No');
    });

    $("#lbl_ajaxCallTime").ajaxStart(function() {
        // store the current date/time...
        startTime = new Date();
        // update labels
        $(this).text("-");
    });

    $("#lbl_ajaxCallTime").ajaxStop(function() {
        // update labels
        $(this).text(myFunctionThatCalculatesTime(startTime));
    });

});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-30 06:18:35

一个有趣的事实是,ajaxStart等实际上只是jQuery事件。例如:

代码语言:javascript
复制
$("#lbl_ajaxInProgress").ajaxStart(function() {
  // update labels
  $(this).text('Yes');
});

等同于:

代码语言:javascript
复制
$("#lbl_ajaxInProgress").bind("ajaxStart", function() {
  // update labels
  $(this).text('Yes');
});

这意味着您还可以将名称空间附加到ajaxStart/ajaxStop等。这也意味着您可以执行以下操作:

代码语言:javascript
复制
$("#lbl_ajaxInProgress").unbind("ajaxStart ajaxStop");

您还可以执行以下操作:

代码语言:javascript
复制
$("#lbl_ajaxInProgress").bind("ajaxStart.label", function() {
  // update labels
  $(this).text('Yes');
});

$("#lbl_ajaxInProgress").bind("ajaxStop.label", function() {
  // update labels
  $(this).text('No');
});

然后:

代码语言:javascript
复制
$("#lbl_ajaxInProgress").unbind(".label");

很酷,是吧?

票数 43
EN

Stack Overflow用户

发布于 2016-01-22 14:27:36

这样使用Ajax调用....

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
<title>Shouting Code</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script
	src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js">
  </script>
</head>
<body>
	<button type="submit" class="btn btn-default"
		onclick="ajaxRequest(this);">
		<i class="fa fa-refresh"></i> Ajax Call
	</button>
	<script>
  function ajaxRequest(id) 
    {
    	 // ajax request
        $.ajax({
            type: 'post',
            url: '/echo/html/',
            data: {
                html: '<p>This is echoed the response in HTML format</p>',
                delay: 600
            },
            dataType: 'html',
            beforeSend: function() { 
           	    //  alert("start");
				$(id).find('i').addClass('fa-spin');
			},
            success: function(data) {
                alert('Fired when the request is successfull');
            },
            complete:function(){  
                 //   alert("stop");
				$(id).find('i').removeClass('fa-spin');
			}
        });
}</script>
</body>
</html>

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1061922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档