国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 PHP開發(fā) ajax基本使用

ajax基本使用

Nov 30, 2016 pm 04:27 PM
ajax

 ajax在我們的開發(fā)中是必須使用的一個技術(shù),ajax即異步的javascript和xml但是現(xiàn)在我們通常使用json來完成數(shù)據(jù)的交互,ajax職責很單一就是數(shù)據(jù)的交互,發(fā)送數(shù)據(jù)接收數(shù)據(jù)是它的核心功能也是唯一的功能。

  ajax的實作依賴XMLHttpRequest,它的基本使用如下:

var xhr;
window.XMLHttpRequest?xhr = new XMLHttpRequest():xhr = new ActiveXObject("Microsoft.XMLHTTP");
xhr.open("get","demo!register.action?name=zt&age=23",true);
xhr.send(null);
xhr.onreadystatechange = function(){
  if(xhr.readyState==4&&xhr.status==200){
     alert(JSON.parse(xhr.responseText));
  }
}

  ajax的職責就是發(fā)送資料和接收資料我們基本使用流程為:

. 3.接收處理伺服器傳回的資料

  根據(jù)上面的步驟來實現(xiàn)一個非同步請求資料的過程,首先取得一個xhr對象,在現(xiàn)代瀏覽器中我們可以直接透過實例化來取得一個xhr物件:var xhr = new XMLHttpRequest( );在IE5、IE6中我們必須使用ActiveXObject來取得xhr物件:var xhr = new ActiveXObject("Microsoft.XMLHTTP")。

  此時我們已經(jīng)得到了xhr物件接下來就是發(fā)送數(shù)據(jù),透過xhr.open()方法來執(zhí)行發(fā)送資料的方式,xhr.open()可以接收5個參數(shù),我們經(jīng)常使用的是前三個:

xhr.open(arg1,arg2,arg3)

  arg1表示請求資料的方式一般為get或post

  arg2表示請求的伺服器位址??就是異步所以我們一般都是使用非同步的方式第三個參數(shù)設(shè)定為true(true表示進行非同步請求false表示進行同步請求)

  xhr.open()方法只是準備一個請求,在呼叫open之後並不會和伺服器進行通訊,而是在呼叫send()函數(shù)之後才會和伺服器開始通訊,send()函數(shù)的參數(shù)將作為請求體傳送到服務(wù)端。如果我們在open()函數(shù)中指定請求的方式為get通常我們將send()設(shè)為xhr.send(null),如果我們希望透過請求體發(fā)送資料則要將open()函數(shù)的請求方式設(shè)為post同時將我們需要傳送的資料作為send()函數(shù)的參數(shù):xhr.send(param),在呼叫send()函數(shù)之後,和伺服器的通訊就開始了。

  對xhr的所有的設(shè)定都應(yīng)該在send()函數(shù)之前設(shè)定好:

xhr.open(...);
  xhr.setRequestHeader(...);
  xhr.overrideMimeType(...);
  xhr.onreadystatechange = function(){...};
  xhr.send(...);

  但是由於xhr.onreadystatechange是一個事件,所以其放在send()之後也是可以執(zhí)行的,出於易讀性我們一般將對xhr的設(shè)定放在send()函數(shù)之前。

  在send()之後可以透過xhr.readyState和xhr.status的來監(jiān)測本次請求的狀態(tài),如果滿足xhr.readyState==4&&xhr.status==200則本次請求成功:

?

?在請求成功時我們可以透過xhr.responseText來取得伺服器傳回的數(shù)據(jù),需要注意xhr.responseText是一個字串。

ajax常用API

  上面的請求過程是一個最基本的請求過程xhr物件還有幾個經(jīng)常使用的方法分別為xhr.abort()、xhr.setRequestHeader()、xhr.overrideMimeType()。

ajax基本使用  xhr.abort():終止一個請求,直接呼叫即可不需要設(shè)定參數(shù)

xhr.abort()

  xhr.setRequestHeader():設(shè)定發(fā)送的請求頭:  xhr.setRequestHeader():設(shè)定傳送的請求頭: Type","application/json; charset=utf-8")

  第一個參數(shù)表示要設(shè)定的header,第二個參數(shù)表示要設(shè)定的header的值。 xhr.setRequestHeader()必須在xhr.open()和xhr.send()之間,否則會拋出異常,同時xhr.setRequestHeader()的第一個參數(shù)是對大小寫不敏感的只要我們字母寫的對就能夠設(shè)定成功,但是出於易讀性我們要設(shè)定為正確的格式。

  xhr.overrideMimeType():重寫回應(yīng)頭的Content-Type:

xhr.overrideMimeType('text/plain; charset=utf-8')

?『、mendo??D. ()之前。


JSON.parse()和JSON.stringify()使用

  JSON.parse()用來將一個物件轉(zhuǎn)換為字串,JSON.stringify()用來將一個字串轉(zhuǎn)換為物件。在利用ajax進行資料互動的過程中傳回的資料多數(shù)的時候是一個JSON格式的字串,如果伺服器給我們回傳了資料此時我們就需要利用JSON.parse()來解析傳回的資料(xhr.responseText即為伺服器傳回的資料):

xhr.onreadystatechange = function(){
  if(xhr.readyState==4&&xhr.status==200){        
  var data = JSON.parse(xhr.responseText);
  }
}

 在使用post方式傳送資料的過程中,如果不是檔案上傳一般情況下傳送的也是一個JSON數(shù)據(jù),要想能夠成功的傳送到後臺就需要用JSON.stringify( )來將JSON物件來轉(zhuǎn)換為字串,同時Content-Type要設(shè)定為application/json:

var sendData = {name:"zt",age:23};
...
xhr.setRequestHeader("Content-Type","application/json; charset=utf-8");
xhr.send(JSON.stringify(sendData));

 另外利用JSON.parse()和JSON.stringify()可以實作一個物件的深拷貝功能:

var sendData = {name:"zt",age:23};
var copyData = JSON.parse(JSON.stringify(sendData));

$.ajax基本使用

  為了方便使用JQ為我們封裝好了一個ajax來方便我們的使用:

$.ajax({
      type:"post",//請求方式
      url:"url",//請求地址
      data:"...",//發(fā)送至服務(wù)端的數(shù)據(jù)
      contentType:"...",//設(shè)置發(fā)送數(shù)據(jù)的類型如果data是一個json字符串這里要設(shè)置為application/json
      success:function(data){...},//請求成功的回調(diào)函數(shù)data可看做是服務(wù)器返回的數(shù)據(jù)
      error:function(){...}//請求失敗的回調(diào)函數(shù)
    });

  或者:

$.ajax({
      type:"post",
      url:"url",
      data:"...",
      contentType:"...",
  })
  .done(function(data){...})
  .fail(function(){...});

回調(diào)函數(shù)中的data即為服務(wù)器返回的數(shù)據(jù)的一個代理,直接使用即可。

為了簡化我們的開發(fā)JQ提供了一些全局設(shè)置函數(shù)包括$.ajaxSetup()、$.()ajaxStart()、$().ajaxStop()、$().ajaxComplete()、$().ajaxError()、$().ajaxSuccess()、$().ajaxSend()。

$.ajaxSetup()用來設(shè)置基本的參數(shù)例如:

  $.ajaxSetup({
      type:"post",
      contentType:"application/json; charset=utf-8"
  });

我們在使用$.ajax時可以直接這樣設(shè)置:

$.ajax({
      url:"",
      success:function(){...},
      error:function(){...}
  })

最終等價于:

$.ajax({
      type:"post",
      contentType:"application/json; charset=utf-8",
      url:"",
      success:function(){...},
      error:function(){...}
  })

  $().ajaxStart()、$().ajaxStop()、$().ajaxComplete()、$().ajaxError()、$().ajaxSuccess()、$().ajaxSend()都是用來設(shè)置一些全局回調(diào)函數(shù)的。例如我們在提交數(shù)據(jù)時為了防止多次提交我們需要在發(fā)送請求時產(chǎn)生一個loading遮罩在數(shù)據(jù)發(fā)送完成后取消遮罩,如果在每一次ajax請求時我們都設(shè)置一次就會很麻煩,此時我們就可以用全局回調(diào)函數(shù)來簡化我們的操作:

  利用全局事件在請求開始時產(chǎn)生一個遮罩在請求完成時取消遮罩:

$(document).ajaxStart(function(){
      loadingMask.show();
  });
  $(document).ajaxComplete(function(){
      loadingMask.hide();
  });


本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP 與 Ajax:建立一個自動完成建議引擎 PHP 與 Ajax:建立一個自動完成建議引擎 Jun 02, 2024 pm 08:39 PM

使用PHP和Ajax建置自動完成建議引擎:伺服器端腳本:處理Ajax請求並傳回建議(autocomplete.php)??蛻舳四_本:發(fā)送Ajax請求並顯示建議(autocomplete.js)。實戰(zhàn)案例:在HTML頁面中包含腳本並指定search-input元素識別碼。

解決jQuery AJAX請求403錯誤的方法 解決jQuery AJAX請求403錯誤的方法 Feb 19, 2024 pm 05:55 PM

jQuery是一個受歡迎的JavaScript函式庫,用來簡化客戶端端的開發(fā)。而AJAX則是在不重新載入整個網(wǎng)頁的情況下,透過發(fā)送非同步請求和與伺服器互動的技術(shù)。然而在使用jQuery進行AJAX請求時,有時會遇到403錯誤。 403錯誤通常是伺服器禁止存取的錯誤,可能是由於安全性原則或權(quán)限問題導(dǎo)致的。在本文中,我們將討論如何解決jQueryAJAX請求遭遇403錯誤

解決jQuery AJAX請求遇到403錯誤的方法 解決jQuery AJAX請求遇到403錯誤的方法 Feb 20, 2024 am 10:07 AM

標題:解決jQueryAJAX請求出現(xiàn)403錯誤的方法及程式碼範例403錯誤是指伺服器禁止存取資源的請求,通常會導(dǎo)致出現(xiàn)這個錯誤的原因是請求缺少權(quán)限或被伺服器拒絕。在進行jQueryAJAX請求時,有時會遇到這種情況,本文將介紹如何解決這個問題,並提供程式碼範例。解決方法:檢查權(quán)限:首先要確保請求的URL位址是正確的,同時驗證是否有足夠的權(quán)限來存取該資

如何解決jQuery AJAX報錯403的問題? 如何解決jQuery AJAX報錯403的問題? Feb 23, 2024 pm 04:27 PM

如何解決jQueryAJAX報錯403的問題?在開發(fā)網(wǎng)頁應(yīng)用程式時,經(jīng)常會使用jQuery來發(fā)送非同步請求。然而,有時在使用jQueryAJAX時可能會遇到錯誤代碼403,表示伺服器禁止存取。這種情況通常是由伺服器端的安全性設(shè)定所導(dǎo)致的,但可以透過一些方法來解決這個問題。本文將介紹如何解決jQueryAJAX報錯403的問題,並提供具體的程式碼範例。一、使

PHP 與 Ajax:建立動態(tài)載入內(nèi)容的解決方案 PHP 與 Ajax:建立動態(tài)載入內(nèi)容的解決方案 Jun 06, 2024 pm 01:12 PM

Ajax(非同步JavaScript和XML)允許在不重新載入頁面情況下新增動態(tài)內(nèi)容。使用PHP和Ajax,您可以動態(tài)載入產(chǎn)品清單:HTML建立一個帶有容器元素的頁面,Ajax請求載入資料後將資料加入到該元素中。 JavaScript使用Ajax透過XMLHttpRequest向伺服器傳送請求,從伺服器取得JSON格式的產(chǎn)品資料。 PHP使用MySQL從資料庫查詢產(chǎn)品數(shù)據(jù),並將其編碼為JSON格式。 JavaScript解析JSON數(shù)據(jù),並將其顯示在頁面容器中。點選按鈕觸發(fā)Ajax請求,載入產(chǎn)品清單。

如何使用Ajax從PHP方法取得變數(shù)? 如何使用Ajax從PHP方法取得變數(shù)? Mar 09, 2024 pm 05:36 PM

使用Ajax從PHP方法取得變數(shù)是Web開發(fā)中常見的場景,透過Ajax可以實作頁面無需刷新即可動態(tài)取得資料。在本文中,將介紹如何使用Ajax從PHP方法中取得變量,並提供具體的程式碼範例。首先,我們需要寫一個PHP檔案來處理Ajax請求,並傳回所需的變數(shù)。下面是一個簡單的PHP檔案getData.php的範例程式碼:

PHP 與 Ajax:提升 Ajax 安全性的方法 PHP 與 Ajax:提升 Ajax 安全性的方法 Jun 01, 2024 am 09:34 AM

為了提升Ajax安全性,有幾種方法:CSRF保護:產(chǎn)生令牌並將其傳送到客戶端,在請求中新增至伺服器端進行驗證。 XSS保護:使用htmlspecialchars()過濾輸入,防止惡意腳本注入。 Content-Security-Policy頭:限制惡意資源加載,指定允許載入腳本和樣式表的來源。驗證伺服器端輸入:驗證從Ajax請求接收的輸入,防止攻擊者利用輸入漏洞。使用安全Ajax函式庫:利用jQuery等函式庫提供的自動CSRF保護模組。

ajax版本有哪些 ajax版本有哪些 Nov 22, 2023 pm 02:00 PM

ajax不是一個特定的版本,而是一種使用多種技術(shù)的集合來非同步載入和更新網(wǎng)頁內(nèi)容的技術(shù)。 ajax沒有特定的版本號,但是有一些ajax的變體或擴充:1、jQuery AJAX;2、Axios;3、Fetch API;4、JSONP;5、XMLHttpRequest Level 2;6、WebSockets;7、Server-Sent Events;8、GraphQL等等。

See all articles