이번에는 너무 길어서 제출할 수 없는 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
});
여기의 콘텐츠 값은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!