js에서 json을 호출하는 방법 요약

小云云
풀어 주다: 2018-02-23 09:25:23
원래의
1753명이 탐색했습니다.

이 글은 주로 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, name=value&name=value

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

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

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

기본 Ajax 작성

Ajax 실행 단계

Ajax 객체 만들기

IE6 이외의 브라우저:


var oAjax=new XMLHttpRequest();
로그인 후 복사

IE6 브라우저:


var oAjax=new ActiveXObject("Microsoft.XMLHTTP");
로그인 후 복사

서버에 연결


Ajax.open(方法,文件名,异步传输);
로그인 후 복사

캐싱을 방지하는 방법:


Ajax.open('GET','a.txt?t='+new Date().getTime(),true);
로그인 후 복사

동기화: js는 작업을 하나씩 수행해야 함을 의미합니다.

비동기: js는 여러 작업을 함께 수행해야 함을 의미합니다.

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

요청 보내기


Ajax.send();
로그인 후 복사

반환 값 받기

요청 상태 모니터링: onreadystatechange 이벤트: Ajax와 서버 사이에 통신이 있을 때 트리거됩니다. 주로 ReadyState 속성으로 종료 여부를 판단합니다. 성공하면 상태 속성으로 판단합니다.

readyState 속성: 요청 상태

0(초기화되지 않음) open 메서드가 아직 호출되지 않았습니다.

1(로드 중) 메소드가 호출되었고 요청이 전송되는 중

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 메서드 캡슐화 POST 메서드로 캡슐화된 함수는 다음과 같습니다.


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

캐싱인 경우 차단 캐시(자주 변경되는 데이터 등은 캐시할 수 없습니다. 주로 사용됩니다. GET 메소드) 매개변수를 전달할 때 경로 뒤에 ?+'변수 데이터'를 추가하면 원본 데이터에 영향을 주지 않고 동적 데이터를 요청할 수 있습니다.


ajax(&#39;a.txt?t=&#39;+new Date().getTime(),function(str){
  alert(str);
},function(str){
  alert(str);
});
로그인 후 복사

ajax : json 파일과 같은

1 문자열이며, 반환된 배열/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);
  });
}
로그인 후 복사

데이터 유형-->반환된 데이터 유형은 다음과 같습니다. be 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;
    }
  }
}
로그인 후 복사

관련 권장 사항:

예 json_jquery

PHP5.5를 호출하는 PHP 크로스 도메인 설치 후 json_encode를 호출할 수 없습니다. Solution

ajax를 사용하여 jquery_jquery에서 json 데이터를 호출하는 방법


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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿