JavaScript基礎之AJAX簡單的小demo
Feb 03, 2017 pm 01:54 PMAJAX
AJAX = Asynchronous JavaScript and XML(非同步的 JavaScript 和 XML)。
AJAX 不是新的程式語言,而是一種使用現有標準的新方法。
AJAX 是與伺服器交換資料並更新部分網頁的藝術,在不重新載入整個頁面的情況下。
function prepareForms() { for(var j=0 ; j<document.forms.length ; j++){ var this_forms = document.forms[j]; resetFields(this_forms); this_forms.onsubmit = function () { if(!validateForm(this)) return false; //进行浏览器端表单验证 var article = document.getElementsByTagName("article")[0]; if(submitFormWithAjax(this,article)) return false; //代表防止重复提交 实际的提交已经完成 return true; } } }
登入後複製
首先透過表單的提交事件調用相應的驗證方法和ajax提交方法如果說ajax提交成功返回false 攔截提交事件如果ajax失敗則正常提交
function displayAjaxLoading(element) { while(element.hasChildNodes()){ element.removeChild(element.lastChild); //如果还有子节点 重复删除 直到内部为空 } var content = document.createElement("img"); content.setAttribute("src","images/loading.gif"); content.setAttribute("alt","loading...."); element.appendChild(content); } //拿到元素 清空内部 并添加一个img function submitFormWithAjax(whichform,thetarget) { 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) //把元素的名字和值转化成URL编码放入容器中 } var data = dataParts.join("&"); //把数组转化成一串字符串 每个项目之间用&连接 request.open("post",whichform.getAttribute("action"),true); //向表单目标地址准备提出名为post的请求 request.setRequestHeader("content-type","application/x-www-form-urlencoded");//设置头部信息 //获取请求后就会调用一下的 方法 算是一个触发器 服务器会执行以下内容 request.onreadystatechange = function () { if(request.readyState == 4){ if(request.status == 200 || request.status == 0){ var matches = request.responseText.match(/<article>([\s\S]+)<\/article>/) //捕获文本 if(matches.length>0){ thetarget.innerHTML = matches[1]; //正则表达式返回0为包含<article> 1为不包含的版本 } else { thetarget.innerHTML = "<p>sorry not find</p>"; } } else { thetarget.innerHTML = "<p>" + request.statusText + "</p>"; } } } request.send(data); //对目标服务器发送请求 return true;//代表函数执行完毕 }
登入後複製
讓我們分步來查看正常提交
rrreee讓我們分步來查看正常提交
rrreee讓我們分步來查看正常提交什麼事情
第一獲取了一個請求對象
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)