XMLHttpRequest Ajax传参,回传过程中不允许再次点击

先记录一下关于状态码的问题吧,因为这里面涉及到两个属性readyState和status;

readyState是XMLHttpRequest对象的一个属性,用来标识当前XMLHttpRequest对象处于什么状态。

status是XMLHttpRequest对象的一个属性,表示响应的HTTP状态码。

当readyState==4  完成响应状态:此时,已经完成了HTTP响应的接收,当status==200   请求成功。例如200状态码,表示请求所希望的响应头或数据体将随此响应返回。

所以当readyState==4&&status==200的时候再处理返回值,其他的情况都做一个弹窗,提示“您的请求正在提交中”,页面的弹层也是覆盖后面的页面,所以提交按钮自然就不能随便点了,当有返回值的时候直接更改弹窗的提示信息就可以了

var getXmlHttpRequest = function () {
    if (window.XMLHttpRequest) {
        //主流浏览器提供了XMLHttpRequest对象
        return new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        //低版本的IE浏览器没有提供XMLHttpRequest对象
        //所以必须使用IE浏览器的特定实现ActiveXObject
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
};
var xhr = getXmlHttpRequest();
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
        //获取成功后执行操作
        //数据在xhr.responseText
    }else{
        //弹出提示正在提交的提示弹层
    }
};
xhr.open("TYPE", "URL", true);
//设置头信息,不然send传输的参数容易失败,后台接收不到参数
xhr.setRequestHeader("Content-Type", ‘application/x-www-form-urlencoded‘);
xhr.send("tkmoney="+$(‘#tkmoney‘).val());
时间: 2024-08-30 06:13:13

XMLHttpRequest Ajax传参,回传过程中不允许再次点击的相关文章

ajax传参在ie8中的问题

/*获取隐藏域数据,并将数据转为数组*/ var Ids = x.val(); var eachParamer = Ids.substring(0,Ids.length-1).split(","); $.ajax({ url: m+"/selfprogram/selfProgram/showParam?paramIds="+Ids,", type: "post", dataType:"json", data:{&qu

jq中的ajax传参

    一.   jq中的Ajax传参有两种           1.通过url地址来传参    2.通过data来传递参数 1. url来传递参数 function GetQuery(id) { if (id ==1||id==7) { var name = "语文"; $.ajax({ url:"../ajaxHandler/ChartsHandler.ashx?id="+id+"&name="+name +"",

Python脚本传参和Python中调用mysqldump

Python脚本传参和Python中调用mysqldump<pre name="code" class="python">#coding=utf-8 import MySQLdb import sys import os # 李红颖编写,用户湖南CLV数据分割使用 print 'dump database:',sys.argv[1] ##传入的第一个参数,数据库名称 print 'dump table:',sys.argv[2] ##传入的第二个参数,表

ajax传参到实体类对应字段

之前看公司的代码,从页面ajax传参数到接口类,接口类用一个实体接收.我一直以为c#会自动识别,赋值到同名的字段. 我曾和朋友讨论过,双方辩论.朋友认为c#没有这种功能,没有这样高级匹配的机制.而我因为在项目中使用的是直接传值,并没有做过什么拼接或转换,所以我认为c#会自动把同名的自动赋值.朋友不同意,于是我们觉得代码上见分晓. 打开vs,我们开始调试,写好一段ajax的js,Url就写接口类的路径,参数为一段json,然后接口类那边接收json.写到接口类的时候,我想要接收ajax传来的数据,

学习笔记:JavaScript传参方式———ECMAScript中所有函数的参数都是按值传递

我们把命名参数(arguments)视为局部变量,在向参数传递基本类型值时,如同基本类型变量的复制一样,传递一个副本,参数在函数内部的改变不会影响外部的基本类型值.如: 1 function add10(num){ 2 num += 10 ; 3 return num ; 4 } 5 var count = 10 ; 6 var result = add10(count); 7 alert(count);// 10 8 alert(result); //20 在向参数传递引用类型的值时,会把这个

2015/10/19总结:ajax传参、jquery.validate自定义日期校验

以下内容仅来自于日常实践零碎回顾.总结,不保证正确性,欢迎路过的大神指点指点! 1.这几天一直在写jsp前端页面,了解到前端与后端数据交互数据有两种.一种是form 的submit方式提交,这种方法可以在表单里通过声明属性:method = 'post'声明表单提交的方式(要与后台的controller的RequestMethod属性对应),  action = ‘ url’声明表单提交后跳转的页面(好像采用这种方式一般都要跳转页面).另一种方式就是通过ajax提交,ajax提交和响应的数据方式

ajax传参数组之request.getParameterValues

web项目中,一般与后台进行交互,都使用ajax进行数据的提交 在数据提交的过程中,一般为提交数据对象.但是在通常过程中,会使用到传入一系列的数据.如批量删除. 我们可以通过传入数组来实现 有以下几种方式:    1.直接传入一个对象数组 var param = [];            param.push({"name":"ids", "value":id});                        $.ajax({      

day8——ajax传参到action(Struts2)

第一种:url+?+参数 jsp中: $(function(){ $("[name='delemp']").click(function(){ $this = $(this); $delid = $this.attr("delid"); if(confirm("确认删除该条数据吗?")){ $.ajax({ type:"get", url:"deleteemployeebyid?delid="+$delid

jquery异步ajax与服务器通信过程中如何通过then方法链式传递多层数据

我们在有些地方可能需要对服务器返回的参数做多步处理,或者很多复杂的操作必须等到服务器返回结果之后才会执行,那么我们可以用链式调用的then方法让这里做到更加易于扩展,也更加容易分离出各个功能模块.基本的方法如下. 1 doSubmit: function(){ 3 $.ajax({ 4 url: url, 5 type: 'post', 6 data: $("#fm").serialize(), 7 dataType: 'html' 8 }).then(function(data){