Ajax 의 네 이 티 브 구현 MIME 유형 에 대한 사용법

2839 단어 Ajax원생MIME
문제 설명
아래 의 예 는 Ajax 의 post 요청 코드 입 니 다.이 코드 는 테스트 가 실 행 될 때 되 돌아 오 는 상태 코드 가 400 이 고 서버 가 이해 할 수 없 는 요청 을 발 견 했 습 니 다.나중에 보기 와 수정 을 통 해 아래 코드 를 조금 만 개조 하면 됩 니 다.
원 코드

var send = function (url, params, fn) {
  var me = this;
  var xhr = null;
  var data = '';
  fn = fn || function() {};
  params = params || {};
  for(var item in params) {
   data += item + '=' + params[item] + '&';
  }
  if(data[data.length - 1] == '&') {
   data = data.slice(0, data.length - 1);
  }
  if(window.XMLHttpRequest) {
   xhr = new XMLHttpRequest();
  }else if(window.ActiveXObject) {
   xhr= new ActiveXObject("Microsoft.XMLHTTP");
  }
  xhr.open("post", url, true);
  xhr.setRequestHeader("Content-type", "application/json");
  xhr.onreadystatechange = function () {
   if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
    fn(JSON.parse(xhr.responseText));
   }
  };
  xhr.send(JSON.stringify(params));
}
수 정 된 코드

var send = function (url, params, fn) {
    var me = this;
    var xhr = null;
    fn = fn || function() {};
    params = params || {};
    if(window.XMLHttpRequest) {
      xhr = new XMLHttpRequest();
    }else if(window.ActiveXObject) {
      xhr= new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open("post", url, true);
    xhr.setRequestHeader("Content-type", "application/json");
    xhr.onreadystatechange = function () {
      if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
        fn(JSON.parse(xhr.responseText));
      }
    };
    xhr.send(JSON.stringify(params));
}
이 두 단락 코드 의 차 이 는 수 정 된 코드 가 data 라 는 변수 에 대한 처리 와 send 에서 전달 하 는 매개 변 수 를 params 라 는 변수 로 바 꾸 는 것 이다.
문제 해결
문 제 는 해결 되 었 지만 제 마음속 의 의문 이 생 겼 습 니 다.예전 에 원생 의 Ajax 를 사 용 했 을 때 method 가 post 였 을 때 전달 하 는 매개 변수의 형식 은'name=123&age=32'였 습 니 다.그런데 왜 지금 은 서열 화 된 JSON 대상 을 전달 하면 되 는 겁 니까?
이때 저 는 제 가 추가 한 MIME 유형,즉 Content-type 을 설정 한 곳 을 알 게 되 었 습 니 다.제 가 설정 한 것 은'application/json'입 니 다.그러면 설명 이 통 하 는 것 같 습 니 다.이때 저 는 예전 에 자주 사용 하 던 MIME 유형 이'application/x-ww-form-urlencoded'라 는 것 을 생각 했 습 니 다.이 럴 때 send 방법 으로 전달 하 는 인 자 는'name=123&age=32'라 는 것 을 구 해 야 합 니 다.여기까지.해 혹 됐 습 니 다~
보충 하 다
참고 로 405 이 상태 코드 를 말씀 드 리 겠 습 니 다.지난번 에 만 났 을 때 제 전단 에서 요청 을 보 냈 을 때 전달 하 는 매개 변수 가 잘못 되 었 습 니 다.이번에 만 났 을 때 배경 에 이 요청 을 추가 하지 않 았 기 때 문 입 니 다.
이상 의 이 Ajax 의 네 이 티 브 구현 MIME 유형 에 대한 사용법 은 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 에 게 참고 가 될 수 있 도록 많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기