>  기사  >  웹 프론트엔드  >  js를 사용하여 json을 호출하는 방법

js를 사용하여 json을 호출하는 방법

亚连
亚连원래의
2018-06-05 15:22:202863검색

이 글은 js 호출 json 메소드 요약에 대한 자세한 분석을 제공합니다. 도움이 필요한 친구들은 이를 참고할 수 있습니다.

Ajax 기본

ajax: 데이터 새로 고침 없음, 서버의 정보 읽기

HTTP 요청 방법:

GET: 게시물 탐색 등 데이터를 얻기 위해 사용

ajax.judgeXmlHttpRequest('get', 'index.php', function(data){
  alert(data);  //这是服务器返回的数据
})

POST: 데이터 업로드에 사용 , 예를 들어 사용자 등록

var dataJson = {
  name: 'ys',age: 123 
}
ajax.judgeXmlHttpRequest('post', 'index.php', function(data){
  alert(data);  //这是服务器返回的数据
},dataJson)

GET과 POST의 차이점:

GET: URL을 통해 전달(URL에 입력), 전달된 데이터는 URL에 배치됩니다. 이름 = 값 & 이름 = 값

get 메소드의 용량이 작고 보안이 낮으며 캐시가 없습니다

POST: URL을 통과하지 않습니다

포스트 용량이 크고 일반적으로 최대 2G이며 보안이 비교적 높으며 캐시가 없습니다

Native Ajax 쓰기

Ajax 작업 단계

Ajax 개체 만들기

Non-IE6 브라우저:

var oAjax=new XMLHttpRequest();

IE6 브라우저:

var oAjax=new ActiveXObject("Microsoft.XMLHTTP");

서버에 연결

Ajax.open(方法,文件名,异步传输);

캐싱 차단 방법:

Ajax.open('GET','a.txt?t='+new Date().getTime(),true);

Sync 동시화: js 가운데 손가락은 하나씩 와야 합니다

비동기: js는 함께 수행해야 하는 여러 작업을 나타냅니다.

ajax는 동기가 아닌 비동기 전송을 위한 것입니다.

요청 보내기

Ajax.send();

반환 값 받기

요청 상태 모니터링: onreadystatechange 이벤트: 서버 간 통신이 있을 때 Ajax가 트리거될 때 주로 ReadyState 속성으로 판단됩니다. 상태 속성

readyState 속성으로 판단됩니다. 0(초기화되지 않음) 및 open 메소드가 아직 호출되지 않음

1(로딩) send() 메소드가 호출되었으며 요청이 전송되는 중

2(로딩 완료) send() 메소드가 완료되었으며 모든 해당 내용이 수신되었습니다

3(파싱) 수신된 응답 내용이 파싱 중입니다

4(완료) 응답 내용 파싱이 완료되었으며 클라이언트에서 호출할 수 있습니다. (완료가 반드시 성공한 것은 아니며 감지하려면 상태가 필요합니다.) 성공 또는 실패)

상태 속성:

요청 결과, 성공(200) 또는 실패(404) 여부:Ajax.status==200

반환 값 responseText:

서버에서 반환된 텍스트: Ajax.responseText (반환된 값은 문자열이며 때로는 다른 형식으로 추가 처리해야 합니다)

oAjax.onreadystatechange=function(){
  //oAjax.readyState: 表示浏览器和服务器之间进行到哪一步了
  if(oAjax.readyState==4){ //读取完成
    if(oAjax.status==200){ //读取的结果是成功
      alert('成功:'+oAjax.responseText);
    }
  }
}

네이티브 Ajax를 사용하기 위해 함수로 캡슐화하고 최종 작성된 네이티브 Ajax는 다음과 같습니다.

GET 메서드로 캡슐화된 함수는 다음과 같습니다. :

function ajax(url,fnSuccess,fnFaild){
  //1.创建Ajax对象。js中,使用一个没有定义的变量会报错,使用一个没有定义的属性,是undefined。IE6下使用没有定义的XMLHttpRequest会报错,所以当做window的一个属性使用
  if (window.XMLHttpRequest) {
    var oAjax=new XMLHttpRequest();//非IE6
   }else{
    var oAjax=new ActiveXObject("Microsoft.XMLHTTP");//IE6
   }
  //2.连接到服务器
  oAjax.open('GET',url,true);
  //3.发送请求
  oAjax.send();
  //4.接收返回值
  oAjax.onreadystatechange=function(){
    //oAjax.readyState--浏览器和服务器之间进行到哪一步了
    if(oAjax.readyState==4){ //读取完成
      if(oAjax.status==200){ //读取的结果是成功
        fnSuccess(oAjax.responseText); //成功时执行的函数
      }else{
        if(fnFaild){  //判断是否传入失败是的函数,即用户是否关心失败时的结果
          fnFaild(oAjax.responseText); //对失败的原因做出处理
        }
      }
     }
   }
  }

POST 메소드로 캡슐화된 함수는 다음과 같습니다:

function ajaxPost(url,id,fnSuccess,fnFaild){
  //1.创建Ajax对象
  if (window.XMLHttpRequest) {
    var xhr=new XMLHttpRequest();//非IE6
  }else{
    var xhr=new ActiveXObject("Microsoft.XMLHTTP");//IE6
  }
  //2.连接到服务器
  xhr.open("POST",url,true);
  //设置头信息
  xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  var form=document.getElementById(id);
  //3.发送请求,传递数据
  xhr.send(serialize(form));
  xhr.onreadystatechange=function(){
    if(xhr.readyState==4){
      if ((xhr.status>=200 && xhr.status<300) || xhr.status==304) {
        fnSuccess(xhr.responseText);
      }else{
        fnFaild(xhr.responseText);
      }
    }
  };
}
문자 세트 인코딩: 웹 페이지 및 요청된 파일에 대한 인코딩은 모두 utf8

캐시인 경우 동일해야 하며 캐싱을 방지합니다( 자주 변경되는 데이터 등은 캐시할 수 없습니다. 매개변수를 전달할 때 경로 뒤에 ?+'변수 데이터'를 추가하면 원본 데이터에는 영향을 미치지 않습니다.

ajax(&#39;a.txt?t=&#39;+new Date().getTime(),function(str){
  alert(str);
},function(str){
  alert(str);
});

ajax는 다음과 같은 동적 데이터를 요청합니다. json 파일

1 ajax 반환 값은 문자열이며, 반환된 배열/json 데이터는 평가 변환을 통해 읽을 수 있습니다.

alert(str);
alert(typeof(str));
var arr=eval(str);
alert(typeof(arr));
alert(arr[1]);
alert(arr[1].c);

2 DOM과 결합하여 표시용 요소를 생성합니다. 반환된 콘텐츠

oBtn.onclick=function(){
  ajax(&#39;data/arr3.txt?t=&#39;+new Date().getTime(),function(str){
    var arr=eval(str);
    for (var i = 0; i < arr.length; i++) {
      var oLi=document.createElement(&#39;li&#39;);
      oLi.innerHTML=&#39;用户名:<span>&#39;+arr[i].user+&#39;</span>密码:<span>&#39;+arr[i].pass+&#39;</span>&#39;;
      oUl.appendChild(oLi);
    }
  },function(str){
    alert(str);
  });
}

데이터 유형--> 반환된 데이터 유형은 xml(거의 제거됨), json(현재 일반적으로 사용됨)일 수 있습니다.

제가 최근에 get 메소드를 통해 json을 호출하기 위해 네이티브 js를 작성한 예를 살펴보겠습니다.

if(!isNaN(matchId)) {
  var xmlHttp = null;
  try {// Chrome, Firefox, Opera, Safari
    xmlHttp = new XMLHttpRequest();
  }catch (e) {
    try {// Internet Explorer IE 6.0+
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {// Internet Explorer IE 5.5+
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        alert("your browser not support ajax!");
      }
    }
  }
  window.onload = function () {
    xmlHttp.open("get",/api/clientMatch/commonMatchDiagram.json?matchId=" + matchId,true);
    xmlHttp.send();
    xmlHttp.onreadystatechange = doResult; //设置回调函数
  };
  function doResult() {
    var html=&#39;&#39;;
    if ((xmlHttp.readyState == 4)&&(xmlHttp.status == 200)) {//4代表执行完成,200代表执行成功
      var data = JSON.parse(xmlHttp.responseText);
      if(data.code == 200){
      //代码执行
      }
      document.getElementById(&#39;appMatch&#39;).innerHTML = html;
    }
  }
}

위는 제가 작성한 것입니다. 모든 사람을 위해 편집되었습니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

Angular를 사용하여 변경 감지를 구현하는 방법

ES6의 맵, 세트, ​​배열 및 객체 비교(상세 튜토리얼)

Node.js를 사용하여 정적 서버를 구현하는 방법

위 내용은 js를 사용하여 json을 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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