原生js实现ajax的一个简单demo
来源:互联网 发布:杭州开创网络 编辑:程序博客网 时间:2024/06/06 01:39
ajax技术非常普遍,各种框架都有实现,今天我写一个原生js实现的ajaxdemo//判断一个表单是否有必须要填写的输入框,然后没有被填写function validateForm(whichform){for(var i = 0;i<whichform.elements.length;i++){//遍历表单中需要填写的信息var element = whichform.elements[i];if(element.required == 'required'){//alert(element);if(!isFilled(element)){alert("请填写" + element.name + "表格");return false;}}}return true;}//为页面中的所有表单绑定点击提交事件。function prepareForms(){for(var i = 0;i<document.forms.length;i++){//遍历所有表单var thisform = document.forms[i];//resetFields(thisform);thisform.onsubmit = function(){//点击函数返回false页面不会发生跳转if(!validateForm(this)) {return false;}//找到p标签由article引用var article = document.getElementsByTagName('p')[0];//以异步的方式提交数据,返回的信息存在article变量里if(submitFormWithAjax(this,article)) return false;//alert("success!");}}}function getHTTPObject(){//创建ajax对象。if(typeof XMLHttpRequest == "undefined")XMLHttpRequest = function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0");}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0");}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){}return false;}return new XMLHttpRequest();}//加载比较慢的时候,增加用户友好度,显示加载等待图片function displayAjaxLoading(element){//去掉指定标签内不需要的子元素while(element.hasChildNodes()){element.removeChild(element.lastChild);}//创建img元素var content = document.createElement("img");content.setAttribute("src","images/timg.gif");content.setAttribute("alt","Loading...");element.appendChild(content);}//自己封装js的ajax异步提交表单的方法function submitFormWithAjax(whichform,thetarget){//得到ajax对象var request = getHTTPObject();if(!request){return false;}//这个函数的交互没有完成,就会显示等待图片。displayAjaxLoading(thetarget);var dataParts = [];var element;for(var i = 0;i<whichform.elements.length;i++){element = whichform.elements[i];dataParts[i] = element.name + '=' + encodeURIComponent(element.value);//数据传输时要加码和解码的}var data = dataParts.join('&');//以下是实现ajax的核心函数request.open("POST",whichform.getAttribute("action"),true);//第一个参数:传递数据的方式//第二个参数:表单的url链接-即处理数据的地方,第三个参数是是否采用异步传输的方式//发送http的头部,这是一个固定搭配request.setRequestHeader("Content-type","application/x-www-form-urlencoded");//数据传输状态改变时的处理函数---即反馈函数,得到服务器传回来的信息request.onreadystatechange = function(){//数据传输完成if(request.readyState == 4){if(request.status == 200 || request.status == 0){//这里的p标签和上面prepareForms函数里为form表单绑定的事件显示回调信息的元素是一致的var matches = request.responseText.match(/<p>([\s\S]+)<\/p>/);//跳转页面的article部分if(matches.length > 0){thetarget.innerHTML = matches[1];}else{thetarget.innerHTML = '<p>对不起,这里有错误!</p>';}}else{thetarget.innerHTML = '<p>' + request.statusText + '</p>';}thetarget.innerHTML=request.responseText}};//发送信息,如果采用get方式,那么不需要data。request.send(data);return true;}//扩展window.onload函数的功能,可以绑定多个事件。function addLoadEvent(func){var oldonload = window.onload;if(typeof window.onload != 'function'){//alert("success!");window.onload = func;}else{window.onload = function(){oldonload();func();}}}addLoadEvent(prepareForms);
阅读全文
0 0
- 原生js实现ajax的一个简单demo
- 用原生JS实现一个简单的计时器demo
- 原生AJAX简单Demo
- 原生js实现ajax的用户简单登入
- 用原生JS实现一个简单计算的功能实例
- 原生js实现Ajax
- 原生js实现ajax
- 原生JS实现Ajax
- 原生js实现ajax
- 原生js实现Ajax
- 原生js实现Ajax
- 原生js实现ajax
- 原生JS实现AJAX的思路
- 原生的js实现ajax请求
- 原生JS实现的AJAX方法、JSONP
- 原生js和jQuery的AJAX实现
- 一个Ext js ajax 的Demo
- 原生JS的ajax
- 128 C语言实现文件复制功能(包括文本文件和二进制文件)
- php与mysql
- App统计指标定义
- POJ-3177(tarjan缩点)
- 129 C语言FILE结构体以及缓冲区深入探讨
- 原生js实现ajax的一个简单demo
- CSS的sprite图片处理
- 左旋转字符串
- 内核中的str函数
- 130 C语言获取文件大小(长度)
- Spring boot读取配置文件总结
- Linux网络状态工具ss命令使用详解
- MediaRecorder录制音频文件
- effectivecpp