>  기사  >  웹 프론트엔드  >  Ajax는 서버에서 반환된 세 가지 데이터 유형을 처리합니다.

Ajax는 서버에서 반환된 세 가지 데이터 유형을 처리합니다.

韦小宝
韦小宝원래의
2017-12-30 20:08:112860검색

이 글은 주로 서버가 반환하는 세 가지 데이터 유형을 ajax가 처리하는 방법을 소개합니다. ajax를 배우는 데 있어 특정 참고 자료와 가치가 있습니다. ajax에 관심이 있는 친구들이 참고할 수 있습니다.

원리는 매우 간단하고 기본적으로는 다음과 같습니다. 동일합니다. 반환된 데이터를 처리하는 방식만 변경하면 됩니다.

1. 텍스트/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 '用户名可用';


호출 형식은 다음과 같습니다.


2.X ML 형식


반환됨 XML DOM 개체이며 그 안의 데이터를 구문 분석하는 것은 HTML DOM 프로그래밍과 유사합니다. 예를 들어 이름을 통해 태그 개체(배열 형식)를 가져온 다음. 배열에서 필수 태그 개체를 가져온 다음 태그 개체에서 텍스트 값을 가져옵니다.

기능은 다음과 같습니다.

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


서버 측 반환 데이터 형식은 다음과 같습니다.
예:


/**
 * @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 &#39;<user><mes>请输入用户名</mes></user>&#39;; //这些标签可以自定义
else if($username == &#39;acme&#39;)
  echo &#39;<user><mes>用户名已被注册</mes></user>&#39;;
else
  echo &#39;<user><mes>用户名可用</mes></user>&#39;;


3.Return json


함수는 다음과 같습니다.

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

서버 -측 반환 데이터 형식은 다음과 같습니다.

예:


/**
 * @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(&#39;POST&#39;,url,true);//方法,URL,异步传输
  //发送请求
  var data = &#39;&#39;;
  for(var d in jsonData)  //拼装数据
    data += (d + &#39;=&#39; +jsonData[d] + &#39;&&#39;);
  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(&#39;(&#39;+oAjax.responseText+&#39;)&#39;);//把传回来的字符串解析成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[&#39;username&#39;]; //获取用户名
if(empty($username))
  echo &#39;{"mes":"请输入用户名"}&#39;;
else if($username == &#39;acme&#39;)
  echo &#39;{"mes":"用户名已被注册"}&#39;;
else
  echo &#39;{"mes":"用户名可用"}&#39;;


편의를 위해 이를 사용하면 세 가지 기능을 병합할 수 있습니다. .병합된 기능은 다음과 같습니다.


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


위 내용은 모두의 학습에 도움이 되기를 바라며, 모두가 PHP 중국어 웹사이트를 응원해 주시길 바랍니다.

관련 권장 사항:


자세한 설명 예시 jQuery Ajax는 토큰을 사용하여 신원을 확인합니다

프런트 엔드 Ajax 및 백엔드 상호 작용에 대한 자세한 설명

네이티브 Ajax 워터폴 흐름 데모 예시 공유

위 내용은 Ajax는 서버에서 반환된 세 가지 데이터 유형을 처리합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.