>웹 프론트엔드 >JS 튜토리얼 >너무 길어서 제출할 수 없는 Ajax 매개변수를 처리하는 방법

너무 길어서 제출할 수 없는 Ajax 매개변수를 처리하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-04-03 09:49:391977검색

이번에는 너무 길어서 제출할 수 없는 ajax 매개변수를 처리하는 방법을 보여드리겠습니다. , 살펴 보겠습니다. 많은 정보를 확인해 보니 get 메소드의 매개변수 길이가 제한되어 있는 반면 post 메소드의 매개변수 길이는 무제한이라고 합니다. 이 역시 get에 비해 post의 장점입니다.

Ajax에서 post 메소드를 사용하고 기존 매개변수 형식(param1=a1¶m2=a2)을 사용합니다. 매개변수 길이가 너무 길면 여전히 제출이 실패합니다. 예를 들어, 우리는 종종 다음과 같이 ajax

post 요청

을 작성합니다:

$.ajax({
  type: "post",  // post or get
  contentType:"application/json;charset=utf-8",
  data: “requestTag=”+tag+"&content="+content,  //请求参数
  url: "postMockJson",   //地址
  dataType: "text",
  error: function (err) {
   outLog("错误"+err);
  },
  success: onSaveSuccess
});
이와 같이 사용하면 매개변수 2: 콘텐츠에 콘텐츠가 너무 많은 경우, 예를 들어 상대적으로 큰 텍스트 콘텐츠를 전달하고 있으며 백그라운드에서 제공합니다(저는

servlet

에서 ​​얻은 경우를 사용합니다):

String content= request.getParameter("content");

여기의 콘텐츠 값은 null입니다.

Ajax 요청이 성공했는지 빠르게 확인할 수 있는 방법도 있습니다. F12 개발자 도구를 사용하면 Ajax 코드를 실행한 후 F12 도구의 네트워크 옵션 페이지에서 시작된 요청을 확인할 수 있습니다. , 요청한 매개변수에 오류 메시지가 있습니다.

해결책: ajax의 매개변수 형식을 작성하는 또 다른 방법이 있습니다. 요청 매개변수를 json 형식으로 작성하면 다음과 같이 작성할 수 있습니다.

var param = "{requestTag:""+requestTag+" ", content:""+content+""}";

(ps: 올바른 json 형식에 주의하세요)이때 F12 키를 눌러 디버그하면 요청한 매개변수의 데이터가 올바른 것을 확인할 수 있습니다. .

그럼 질문은 내가 서블릿에서 얻은 콘텐츠가 여전히 null이라는 것입니다. 왜 그렇습니까? ? ?

요청 매개변수는 json 데이터 블록이므로 물론 request.getParameter("content") 메서드는 json 데이터를 구문 분석하지 않기 때문에 데이터를 얻을 수 없습니다.

그럼 우리가 전달하는 매개변수 데이터는 어디에 있나요? 핵심 사항은 다음과 같습니다. 데이터는 모두 요청 개체에 있습니다.

그런 다음 가장 원시적인 방법을 사용하여 데이터 흐름 방법을 통해 전송된 데이터를 얻습니다.

request.setCharacterEncoding("UTF-8");
StringBuilder sb = new StringBuilder();
try(BufferedReader reader = request.getReader();) {
char[] buff = new char[1024];
int len;
 while((len = reader.read(buff)) != -1) {
  sb.append(buff,0, len);
  }
}catch (IOException e) {
   e.printStackTrace();
}

이때 json 데이터는 모두 sb 개체에 있으므로 json 개체만 구문 분석하면 됩니다. :

JSONObject jobject = JSONObject.fromObject(sb.toString());
String requestTag = jobject.getString("requestTag");
String content = jobject.getString("content");

이제 콘텐츠를 얻을 수 있습니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

Ajax 도메인 간 액세스 오류 501을 처리하는 방법


Ajax를 사용하여 인사 시스템 데이터를 기반으로 OA 계정을 추가하는 방법

위 내용은 너무 길어서 제출할 수 없는 Ajax 매개변수를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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