캐시 문제:
캐시 문제란 무엇인가요? 즉, 브라우저의 입력 내용이 동일할 경우, 즉 요청된 URL이 동일할 경우 브라우저는 캐시를 읽습니다. 내용이 두 번 동일할 경우 서버와 상호 작용하지 않습니다.
해결책: 요청한 URL에 타임스탬프를 추가하세요.
테스트를 통해 IE와 360은 사용자 이름을 두 번 입력하면 서버와 상호 작용하지 않습니다. 사용자 이름을 두 번 입력해도 Firefox는 계속 서버와 상호 작용합니다.
즉, Firefox에서 서버가 반환하는 임시 값은 매번 1씩 증가하지만 IE와 360은 변경되지 않습니다. 따라서 타임스탬프를 추가해도 더 이상 이 세 가지 브라우저에서 캐싱 문제가 발생하지 않습니다.
수정된 코드:
AJAXServer.java
캐싱 문제
//캐싱 문제에 추가된 테스트 코드의 입력 내용은 IE에서는 그대로이고 360회 횟수도 늘어나지 않지만 파이어폭스는 늘어나게 됩니다.
Integer inte=(Integer) 요청 .getSession().getAttribute("total");
int temp=0;
if(inte==null){
temp=1
}else{
temp=inte .intValue() 1;
}
request.getSession().setAttribute("total",temp);
위 코드를 AJAXServer.java에 추가하고 temp를 추가합니다. out.println 동안 변수를 지정하고 이를 클라이언트에 반환합니다.
이렇게 클라이언트의 임시 값이 추가되면 클라이언트와 서버가 상호 작용한다는 의미이고, 그렇지 않으면 상호 작용이 없다는 의미입니다.
verify.js
//URL 주소에 타임스탬프 추가, 브라우저를 속이고 캐시를 읽지 않음
함수 변환URL(url){
//타임스탬프 가져오기
var timestamp=(new Date().valueOf());
//타임스탬프 정보를 URL에 연결
//url="AJAXServer"
if(url.indexOf("? ")> ;=0){
url=url "&t=" 타임스탬프;
}else{
url=url "?t=" 타임스탬프;
return url;
function verifyCache(){
var url="AJAXServer?name=" $("#username").val();
url=convertURL(url); //캐시
$. get(url,null,function(data){
$("#result").html(data);
})
}
내가 방금 확인 및 캐싱 문제에 대해 질문했습니다. 문제에 대한 설명을 용이하게 하기 위해 사용된 확인 방법은 서버 측 텍스트 데이터를 수신하기 위해 jquery로 캡슐화된 ajax입니다.
》》》마찬가지로 ajax.html에서 호출되는 메소드를 수정하고 위 스크립트에서 이름을 verifyCache()로 변경하는 것을 잊지 마세요.
중국어 문제:
두 가지 해결책이 있습니다:
첫 번째 유형: 페이지 측에서 encodeURI를 한 번 사용하고 서버 측에서 String name=new String(old.getBytes("iso8859-1"),"UTF-8")을 사용하십시오.
중국어 1
var url="AJAXServer?name =" encodeURI($("#username ").val());
url=convertURL(url); //캐시
$.get(url,null,function(data){
$ ("#result").html( data);
});
》》》 verify.js에 위 메소드를 추가하고
String name=new String(old.getBytes(")도 추가합니다. iso8859-1"),"UTF-8 ");
이 AJAXServer.java 클래스의 적절한 위치에 추가됩니다. 예를 들어 PrintWriter 코드 뒤에 넣으면 됩니다.
마찬가지로 첫 번째 방법을 사용할 때는 ajax.html에서 호출되는 메서드를 수정하고, 위 스크립트에서 이름을 verifychinese1()로 변경하는 것을 잊지 마세요.
두 번째 방법: 페이지에서 encodeURI를 두 번 사용하세요. 쪽 및 서버 쪽에서 String name= URLDecoder.decode(old,"UTF-8")
중국어 2
var url="AJAXServer?name=" encodeURI(encodeURI($("#username").val ()));
url= ConvertURL(url); //캐시
$.get(url,null,function(data){
$("#result").html(data);
});
}
》》》 verify.js에 위 메소드를 추가하고
String name= URLDecoder.decode(old, "UTF-8")
AJAXServer.java에 클래스의 적절한 위치를 지정합니다. 예를 들어 PrintWriter 코드 뒤에 넣으면 됩니다.
마찬가지로 두 번째 방법을 사용할 때에는 ajax.html에서 호출되는 메소드를 수정하는 것을 잊지 마시고, 위 스크립트에서 verifychinese2()로 이름을 변경해주세요.
소스코드가 필요하신 분은 이용하시면 됩니다. 메시지를 남겨주세요.
며칠 공부를 한 후, Ajax의 동적 검증에 대한 기본적인 이해가 되었으며 앞으로 상황에 따라 해당 내용을 추가하겠습니다.