中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ajax如何處理服務器返回的三種數據類型

發布時間:2021-09-01 11:44:30 來源:億速云 閱讀:151 作者:小新 欄目:web開發

這篇文章給大家分享的是有關ajax如何處理服務器返回的三種數據類型的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

其原理很簡單,結構上基本不變,只是改變處理返回數據的方式.

1.Text/HTML格式
這種返回類型處理很簡單,直接就當作字符串用就行了.為了方便使用,封裝成如下函數:

/**
 * @function 利用ajax動態交換數據(Text/HTML格式)
 * @param url  要提交請求的頁面
 * @param jsonData 要提交的數據,利用Json傳遞
 * @param getMsg 這個函數可以獲取到處理后的數據
 */
function ajaxText(url,jsonData,getMsg)
{
  //創建Ajax對象,ActiveXObject兼容IE5,6
  var oAjax = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
  //打開請求
  oAjax.open('POST',url,true);//方法,URL,異步傳輸
  //發送請求
  var data = '';
  for(var d in jsonData)  //拼裝數據
    data += (d + '=' +jsonData[d]+'&');
  oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  oAjax.send(data);
  //接收返回,當服務器有東西返回時觸發
  oAjax.onreadystatechange = function ()
  {
    if(oAjax.readyState == 4 && oAjax.status == 200)
    {
      if(getMsg) getMsg(oAjax.responseText);
    }
  }
}

服務器端返回數據格式如下:
例如:

//返回的是xml格式
//header("Content-Type:text/xml;charset=utf-8");
//返回的是text或Json格式
header("Content-Type:text/html;charset=utf-8");
//禁用緩存,是為了數據一樣的前提下還能正常提交,而不是緩存數據
header("Cache-Control:no-cache");
$username = $_POST['username']; //獲取用戶名
if(empty($username))
  echo '請輸入用戶名';
else if($username == 'acme')
  echo '用戶名已被注冊';
else
  echo '用戶名可用';

調用格式如下:

url = 'abc.php';
var jsonData={username:'acme',passw:'acme'};
ajaxText(url,jsonData,getMsg);
function getMsg(msg)
{
 //do something
}

2.XML格式

返回的是一個XML DOM對象,解析其中的數據就類似于HTML DOM 編程. 比如通過name獲取標簽對象(數組形式),再從該數組中獲取需要的標簽對象,再從標簽對象中獲取文本值.
函數如下:

/**
 * @function 利用ajax動態交換數據(XML格式)
 * @param url  要提交請求的頁面
 * @param jsonData 要提交的數據,利用Json傳遞
 * @param tagName 要獲取值的標簽名
 * @param getMsg 這個函數可以獲取到處理后的數據
 */
function ajaxXML(url,jsonData,tagName,getMsg)
{
  //創建Ajax對象,ActiveXObject兼容IE5,6
  var oAjax = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
  //打開請求
  oAjax.open('POST',url,true);//方法,URL,異步傳輸
  //發送請求
  var data = '';
  for(var d in jsonData)  //拼裝數據
    data += (d + '=' +jsonData[d] + '&');
  oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  oAjax.send(data);
  //接收返回,當服務器有東西返回時觸發
  oAjax.onreadystatechange = function ()
  {
    if(oAjax.readyState == 4 && oAjax.status == 200)
    {
      var oXml = oAjax.responseXML; //返回的是一個XML DOM對象
      var oTag = oXml.getElementsByTagName(tagName);
      var tagValue = oTag[0].childNodes[0].nodeValue;
      if(getMsg)getMsg(tagValue);
    }
  }
}

服務器端返回數據格式如下:
例如:

//返回的是xml格式
header("Content-Type:text/xml;charset=utf-8");
//返回的是text或Json格式
//header("Content-Type:text/html;charset=utf-8");
//禁用緩存,是為了數據一樣的前提下還能正常提交,而不是緩存數據
header("Cache-Control:no-cache");
$username = $_POST['username']; //獲取用戶名
if(empty($username))
  echo '<user><mes>請輸入用戶名</mes></user>'; //這些標簽可以自定義
else if($username == 'acme')
  echo '<user><mes>用戶名已被注冊</mes></user>';
else
  echo '<user><mes>用戶名可用</mes></user>';

調用格式如下:

var url = 'abc.php';
var jsonData = {username:'acme'};
ajaxXML(url,jsonData,'mes',getMsg);
function getMsg(msg)
 {
   //do something
 }

3.返回json

函數如下:

/**
 * @function 利用ajax動態交換數據(Text/HTML格式),但是返回的是Json類型的文本數據
 * @param url  要提交請求的頁面
 * @param jsonData 要提交的數據,利用Json傳遞
 * @param getMsg 這個函數可以獲取到處理后的數據
 */
function ajaxJson(url,jsonData,getMsg)
{
  //創建Ajax對象,ActiveXObject兼容IE5,6
  var oAjax = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
  //打開請求
  oAjax.open('POST',url,true);//方法,URL,異步傳輸
  //發送請求
  var data = '';
  for(var d in jsonData)  //拼裝數據
    data += (d + '=' +jsonData[d] + '&');
  oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  oAjax.send(data);
  //接收返回,當服務器有東西返回時觸發
  oAjax.onreadystatechange = function ()
  {
    if(oAjax.readyState == 4 && oAjax.status == 200)
    {
      var json = eval('('+oAjax.responseText+')');//把傳回來的字符串解析成json對象
      if(getMsg)getMsg(json);
    }
  }
}

服務器端返回數據格式如下:

例如:

//返回的是xml格式
//header("Content-Type:text/xml;charset=utf-8");
//返回的是text或Json格式
header("Content-Type:text/html;charset=utf-8");
//禁用緩存,是為了數據一樣的前提下還能正常提交,而不是緩存數據
header("Cache-Control:no-cache");
$username = $_POST['username']; //獲取用戶名
if(empty($username))
  echo '{"mes":"請輸入用戶名"}';
else if($username == 'acme')
  echo '{"mes":"用戶名已被注冊"}';
else
  echo '{"mes":"用戶名可用"}';

調用格式如下:

url = 'abc.php';
var jsonData={username:'acme',passw:'acme'};
ajaxText(url,jsonData,getMsg);
function getMsg(msg)
{
 //do something
}

為了方便使用,可以把三個函數合并.合并后的函數如下:

/**
 * @function 利用ajax動態交換數據
 * @param url  要提交請求的頁面
 * @param jsonData 要提交的數據,利用Json傳遞
 * @param getMsg 這個函數可以獲取到處理后的數據
 * @param type  接受的數據類型,text/xml/json
 * @param tagName type = xml 的時候這個參數設置為要獲取的文本的標簽名
 * @return 無
 */
function ajax(url,jsonData,getMsg,type,tagName)
{
  //創建Ajax對象,ActiveXObject兼容IE5,6
  var oAjax = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
  //打開請求
  oAjax.open('POST',url,true);//方法,URL,異步傳輸
  //發送請求
  var data = '';
  for(var d in jsonData)  //拼裝數據
    data += (d + '=' +jsonData[d]+'&');
  oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  oAjax.send(data);
  //接收返回,當服務器有東西返回時觸發
  oAjax.onreadystatechange = function ()
  {
    if(oAjax.readyState == 4 && oAjax.status == 200)
    {
      if(type == 'text')
      {
        if(getMsg) getMsg(oAjax.responseText);
      }
      else if(type == 'json')
      {
        var json = eval('('+oAjax.responseText+')');//把傳回來的字符串解析成json對象
        if(getMsg)getMsg(json);
      }
      else if(type == 'xml')
      {
        var oXml = oAjax.responseXML; //返回的是一個XML DOM對象
        var oTag = oXml.getElementsByTagName(tagName);
        var tagValue = oTag[0].childNodes[0].nodeValue;
        if(getMsg)getMsg(tagValue);
      }

    }
  }
}

感謝各位的閱讀!關于“ajax如何處理服務器返回的三種數據類型”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

聂拉木县| 克什克腾旗| 南川市| 永川市| 台山市| 沙洋县| 响水县| 沈阳市| 紫阳县| 连山| 浮梁县| 巴楚县| 浪卡子县| 衡阳市| 陵川县| 平昌县| 阳曲县| 长汀县| 荔波县| 都昌县| 黄梅县| 辽宁省| 保德县| 普陀区| 安庆市| 新安县| 赤峰市| 祁门县| 巢湖市| 昌黎县| 墨竹工卡县| 奎屯市| 武隆县| 泗阳县| 闻喜县| 县级市| 和静县| 临江市| 东方市| 通化市| 海南省|