Ajax 學習 - 基礎學習

《AJax - Async Javascript and xml - 異步的JavaScript和XML》

一、基礎認識

AJax技術的目的:實現頁面無刷新數據動態更改

優點:?

  +?不需要插件支持

  +?提供WEB程序的功能

  +?優秀的用戶體驗

  +?減輕服務器帶寬的負擔

缺點:

  +?破壞瀏覽器的前進與后退

  +?搜索引擎SEO的支持性不好

?

二、代碼示例

學習后編寫的一個很基礎的Ajax函數,幫助自己更好的掌握Ajax

/** method => Ajax請求所采用的方法,GET或POST * URL => 所要請求頁面的URL* paras=> 發送時附加的參數* callback => 完成請求或頁面數據準備完畢時執行的方法 
*/function Ajax(method,url,paras,callback){function getXMLHttpReq(){var XMLHttpReq = null;if(window.XMLHttpRequest){ XMLHttpReq = new XMLHttpRequest();}else if(window.ActiveXObject){XMLHttpReq = new ActiveXObject('Microsoft.XMLHTTP');}return XMLHttpReq;}xhr = getXMLHttpReq();if(method ==='POST'){xhr.open('POST',url,true);  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');if(paras!=''){xhr.send(paras);}else{xhr.send(null);}}else{if(paras!=''){url = encodeURI(url+'?'+paras);    }xhr.open('GET',url,true);xhr.send(null);}xhr.onreadystatechange=function(){if(xhr.readyState==4&&xhr.status==200){callback();}}
}//調用方法function Ajax1(){Ajax('GET','test.php','',function(){document.getElementById('responseText').innerHTML = xhr.responseText;})            }

?

· 代碼說明:

ActiveXObject  //  利用ActiveX插件可以與微軟的其它組件進行交換,包括這里我需要的微軟自帶的HTTP請求方法。new ActiveXObjcet('Microsoft.XMLHTTP') // IE5/6支持的HTTP請求方法
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
//如果Ajax請求是通過POST方式,那么為了方便后臺通過鍵值對的形式獲取數據,可以指定數據的發送以表單的形式。
open('GET','index.php?a=1&b=2',true)  //GET方式,通過在URL附加參數進行數據的傳輸。

XMLHttpReq.send(pars)  //POST方式的數據發送
url = encodeURI(url+'?'+pars);     
//為了解決IE6/7在GET方式下傳輸中文參數出現亂碼的情況,會在參數傳輸之前利用JS進行URL編碼。

echo urldecode($_GET['a']) 
// 客戶端進行編碼,服務端進行解碼

?

·?重點講解:

  1. readyState && status

  ?readyState表示HTTP請求的運行狀態,不論請求的數據是否找到,都會經歷以下的過程:

    0 ---- ?請求未初始化

    1 ---- ?與服務器建立連接

    2 ---- 請求已經接收

? ? ? ? ? ?3 ---- 請求正在處理

   status 則表示了HTTP所請求數據的狀態[常見的反饋碼]:

    200 ---- 數據請求完成,已經可以使用。

    404 ---- 頁面未找到。

  2.?open()

    功能:初始化請求的參數。

    格式:open('請求數據的方式','所要請求的頁面URL','是否異步');

    格式說明:

         ·?請求數據的方式:GET | POST

         ·??是否異步:true(異步) | false(同步)

    * 如果存在setRequestHeader()方法,一定要把open()方法放在它之前的一行。

?

  3. send()

    功能:發送請求。

    格式:send(paras)

    代碼示例:

send(null)//在GET方式下用這種方式,因為參數會附加在URL后進行傳輸。
 
send('fname=神&lname=經病') //在POST方式,用這種方式傳輸參數,但要記得使用setRequestHeader()方法

  

  4.?同步與異步

    xmlHttpReq對象的open()方法第三個參數可以設置同步或異步的方式。

    true - 表示為異步,它不會等待服務器的執行完成。

    false - 表示同步,它會等待服務器執行完成,否則便會掛起程序,一直等待,一般不推薦是用同步的方式,不過對于一些小程序還是可以使用的。

  

  5.??setRequestHeader()

    ?該方法可以設置請求的頭部信息,常用以post方式向一個動態網頁文件提交數據時使用。這

    是因為PHP中的$_POST['key']方法,需要用到鍵值對的格式,因此必須聲明請求的類型為:?setRequestHeader('Content-Type','application/x-www-form-urlencoded')?以表單提交數據的方式來發送數據到服務器。

    

  6. 使用時間戳或隨機數來確保無緩存的請求數據

    

//時間戳
open('GET','index.php?t='+ new Date()*1,true)//隨機數
open('GET','index.php?m='+ Math.random(),true)

?

轉載于:https://www.cnblogs.com/HCJJ/p/4869732.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374367.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374367.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374367.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32F1筆記(十三)SPI

SPI:Serial Peripheral interface,串行外圍設備接口。 SPI接口一般使用4條線通信: MISO主設備數據輸入,從設備數據輸出。 MOSI主設備數據輸出,從設備數據輸入。 SCLK時鐘信號,由主設備產生。 從圖中可以…

紅帽Openshift:入門–云中的Java EE6

現在有一段時間,我正在研究“云”。 研究它的功能,它可以做什么,為什么我們應該切換到“云”,進行討論,與RealDolmen的云專家maartenballiauw等人交談。 我已經在Google App Engine(用于Java)上…

python自定義函數參數_python自定義函數的參數之四種表現形式

(1)def a(x,y):print x,y 這是最常見的定義方式,調用該函數,a(1,2)則x取1,y取2,形參與實參相對應,如果a(1)或者a(1,2,3)則會報錯 (2)def a(x,y3):print x,y 提供了默認值…

osg添加紋理示例

轉自http://www.cnblogs.com/ylwn817/articles/1976851.html #include <osgDB/ReadFile>#include <osgViewer/Viewer> #include <osg/Node>#include <osg/Geode>#include <osg/Geometry>#include <osg/Group>#include <osg/Texture2D&g…

2.運算符

Swift 支持大部分標準 C 語言的運算符&#xff0c;分為一元、二元和三元運算符。 一元運算符對單一操作對象操作&#xff08;如 -a&#xff09;。一元運算符分前置運算符和后置運算符&#xff0c;前置運算符需緊跟在操作對象之前&#xff08;如 !b&#xff09;&#xff0c;后置…

C語言開發筆記(二)volatile

volatile常用于多線程共享資源和嵌入式軟件的中斷。 &#xff08;一&#xff09;嵌入式軟件中斷中volatile的應用 volatile unsigned short g_timer3_count 0;void TIM3_IRQHandler(void) {if (TIM_GetITStatus(TIM3, TIM_IT_Update) ! RESET){TIM_ClearITPendingBit(TIM3, T…

在WebLogic 12c上運行RichFaces 4.1.0.Final

您可能已經注意到&#xff0c;我只是喜歡JSF。 不僅是Mojarra的規范和參考實現&#xff0c;而且是市場上最具創意的組件套件。 這是我一直以來最喜歡的PrimeFaces &#xff0c;當然還有RichFaces 。 這就是為什么在這里找到“在xxx上運行xxx”帖子的原因:)今天是我的RichFaces和…

maven 私服的setting.xml配置

1 <?xml version"1.0" encoding"UTF-8"?>2 <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" 3 xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation"http://m…

python中的運算符_Python 中的神秘運算符

今天我們來講講 Python 里一個不為眾人所知的運算符。你可能會覺得疑惑&#xff1a;還有我不知道的運算符&#xff1f;別急著下結論&#xff0c;先往下看看再說。 在 Python3.5 中通過 PEP465https://www.python.org/dev/peps/pep-0465 加入了 運算符&#xff0c;也就是矩陣相乘…

input type:text輸入框點擊輸入,文字消失

<input name"Header1$txbsearch" type"text" value"18912345678" id"Header1_txbsearch" class"txbindex" οnfοcus"if (value 18912345678){value }" οnblur"if (value ){value18912345678}" sty…

C語言開發筆記(一)自動轉換和強制轉換

整型數據和實行數據之間可以進行運算&#xff0c;而且字符型數據可以和整型數據通用&#xff0c;所以整型、實型、字符型數據之間也是可以進行運算的&#xff0c;但在運算處理之前&#xff0c;不同類型的數據要事先轉換成同一種數據類型。轉換方法有兩種&#xff1a;自動轉換和…

Apache Shiro:簡化應用程序安全性

考慮到JAVA已有10多年的歷史了&#xff0c;對于需要在其應用程序中內置身份驗證和授權的應用程序開發人員來說&#xff0c;選擇的數量非常少。 在JAVA和J2EE中&#xff0c;JAAS規范是一種嘗試解決安全性的問題。 盡管JAAS用于身份驗證&#xff0c;但授權部分卻過于繁瑣而無法使…

Maven 導出依賴Jar,生成source.jar,javadoc.jar

下載最新版的Maven http://maven.apache.org/download.cgi 解壓到本地文件夾新建環境變量 MAVEN_HOME maven解壓目錄在path加入 %MAVEN_HOME%/bin;需要確保已經有Java環境變量 &#xff08;打開cmd java -version,javac -version兩個命令看正常不&#xff09;一、導出到默認目…

python提取包含特定字符串的行_python語言----txt中搜索特定字符串所在行

打開IDLE(python)&#xff0c;并新創建一個py文件&#xff0c;編輯內容為&#xff1a; 本示例演示如何在一個txt文件中搜索特定的字符串&#xff0c;并將其行顯示# 1. 打開文件# 2. 讀取行信息# 3. 判斷是否包含關鍵詞# 4. 不包含則循環操作&#xff0c;包含的話將行顯示并退出…

asp.net 分布式應用開發

Net Framework推出的許多新技術為上述任務的實現提供了相對簡單的解決方案。其中&#xff0c;基于SOAP的Web Service在處理分布式應用時具有比傳統的DCOM/CORBA明顯的優點&#xff0c;結合基于Web的ASP.NET頁面開發技術和SQL Server數據存儲技術&#xff08;或Xml文檔&#xff…

Spring Data JPA的持久層

1.概述 本文將重點介紹Spring 3.1&#xff0c;JPA和Spring Data的持久層的配置和實現。 有關使用基于Java的配置和項目的基本Maven pom設置Spring上下文的分步介紹&#xff0c;請參閱本文 。 持久性與春天 系列 &#xff1a; 第1部分 – 具有Spring 3.1和Hibernate的持久層 …

C語言開發筆記(三)自加和自減

看到一段代碼&#xff0c;被坑了。 #include <stdio.h>int main(void) {int a 7;printf("%d\n", a);printf("%d\n", a--);printf("%d\n", -a);printf("%d\n", -a--);printf("%d\n", a);return 0; } 結果為 -a的邏輯…

求解數獨回溯算法

實現的java代碼如下&#xff08;該算法只是將結果打印輸出&#xff0c;并沒有對原數組實現更改&#xff09;&#xff1a; //判斷a[i][j]取值val是否有效public boolean isValid(int[][] a, int i, int j, int val){//判斷是否跟同行沖突for(int j10;j1<9;j1){if(a[i][j1]val…

python語言屬于哪一種語言_Python與Java:你應該學習哪種語言,他們有什么區別?...

在企業招聘中&#xff0c; Python和Java經常是需求最大的編程語言。這兩種編程功能強大&#xff0c;靈活且面向對象的語言&#xff0c;通常在組織中和各種其他設置中使用。這可能會導致我們提出一個不可避免的問題&#xff1a;哪個更好&#xff1f; 這是一個復雜的問題&#xf…

關于手機端CSS Sprite圖標定位的一些領悟

今天在某個群里面閑逛&#xff0c;看見一個童鞋分享了一個攜程的移動端的頁面。地址這里我也分享下吧&#xff1a;http://m.ctrip.com/html5/在手機端我都很少用雪碧圖合并定位圖標&#xff0c;用的比較多就是用字體圖標來代替&#xff0c;有些圖標不多的時候就自己單個的切出來…