zoukankan      html  css  js  c++  java
  • jQuery $.ajaxSend()

    语法:

    $("#msg").ajaxSend(function(evt,request,settings){});
    AJAX请求发送前执行函数。Ajax事件。

    XMLHttpRequest对象和设置作为参数传递给回调函数

    $("#msg").ajaxSend(function(evt,request,settings){})是全局事件,也就是说,

    只要该页面定义了这个函数,那么,在每个ajax请求前都会执行该函数,这既与该函数前面的选择器#msg无关,

    也与用$.get还是$.post请求无关。看下面例子:

    <script type="text/javascript">
    	$(document).ready(function() {
    
    		$("#msg").ajaxSend(function() {
    			alert("无论点击按钮1还是按钮2,都会触发我");
    		});
    
    		$("#btn1").click(function() {
    			$.post("test1", function() {
    				$("#msg").val("haha");
    			});
    		});
    
    		$("#btn2").click(function() {
    			$.get("test2", function() {
    				$("#msg").val("haha");
    			});
    		});
    	})
    </script>
    
    <body>
    	<input type="text" id="msg" value="" />
    	
    	<button id="btn1">
    		按钮1
    	</button>
    	<button id="btn2">
    		按钮2
    	</button>
    </body>
    上面只在一处定义了全局事件$("#msg").ajaxSend(function(){});

    我们发现无论是单击id="btn1"执行$.post请求,还是单击id="btn2"执行$.get请求,都会触发全局事件.

    需要注意的是上面定义$("#msg").ajaxSend(function(){});事件不在任何一下onClick事件中。

    如果是定义在btn1或btn2中的任何一个click事件中,那么,该全局事件会增加执行次数,而不是覆盖。

    $("#msg").ajaxStart(function(){ })与$("#msg")ajaxSend(function(){ })函数使用方法相大部分相同,也是全局事件.

    区别是ajaxStart执行的顺序早于ajaxSend执行,另外,$("#msg").ajaxStart(function(){ })的执行函数无参数

    而$("#msg").ajaxSend(function(evt, request, settings){ })的执行函数可以有参数。

    这样,虽然该函数是全局函数,我们可以根据参数值的不同而让其对不同的触发产生不同的效果看如下的例子:

    <script type="text/javascript">
    	$(document).ready(function() {
    
    		$("#msg").ajaxSend(function(event, obj, options) {
    			if (options.url == "test1") {
    				alert("按钮1");
    			} else if (options.url == "test2") {
    				alert("按钮2");
    			}
    		});
    
    		$("#btn1").click(function() {
    			$.post("test1", function() {
    				$("#msg").val("haha");
    			});
    		});
    
    		$("#btn2").click(function() {
    			$.get("test2", function() {
    				$("#msg").val("haha");
    			});
    		});
    	})
    </script>
    <body>
    	<input type="text" id="msg" value="" />
    
    	<button id="btn1">
    		按钮1
    	</button>
    	<button id="btn2">
    		按钮2
    	</button>
    </body>
    第二个例子和第一个相比在ajaxSend函数中加入了参数并在函数里进行了判断。

    对于$("#msg").ajaxSend(function(event, obj, options){})函数,注意对于形参来说,只要位置对应,用什么字符来表示是无所谓

    event - 包含event对象具体的属性主要有很多,需要知道的一个最重要的属性是该对象包含{type:事件名}事件名就是ajax全局事件,

    在此例中为ajaxSend,也就是说event对象有一个属性type其值为"ajaxSend"

    obj - 包含XMLHttpRequest对象,主要是该对象的请求状态参数。

    options - 包含AJAX请求中使用的选项,主要是当前请求的一些设置参数比如上面用到的url

    如果想查看全部的属性,可用console.info()打印到控制台,如截图:



    作者:itmyhome



  • 相关阅读:
    字符串中去除连续相同的字符保留一个
    截取字符串中最后一个中文词语(MS SQL)
    WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for 'jquery'. Please add a ScriptResourceMapping named jquery(case-sensitive).
    Unexpected error from external database driver (1)
    RDLC报表显示存储于数据库的图片
    从angularjs传递参数至Web API
    angularjs呼叫Web API
    创建Web API并使用
    打印网页中某一段内容
    在angularjs实现一个时钟
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131229.html
Copyright © 2011-2022 走看看