이전에는 Ajax를 자세히 연구하지 않았는데, 그냥 사용하다가 문제를 발견하고 해결책을 찾았습니다.
1. Ajax Get과 Post의 차이점에 대해 말하자면
Get 메소드:
간단한 데이터를 전송하기 위해 get 메소드를 사용하지만 일반적으로 데이터 크기가 1KB로 제한되어 있습니다. 즉, 브라우저는 URL 매개변수 형식으로 요청 라인의 리소스 경로 끝에 각 양식 필드 요소와 해당 데이터를 추가합니다. 가장 중요한 것은 클라이언트의 브라우저에 캐시되어 다른 사람들이 브라우저 기록에서 계좌 번호, 비밀번호 등과 같은 고객의 데이터를 읽을 수 있다는 것입니다. 따라서 어떤 경우에는 get 메소드가 심각한 보안 문제를 일으킬 수 있습니다.
Post 메서드:
POST 메서드를 사용할 때 브라우저는 각 양식 필드 요소와 해당 데이터를 HTTP 메시지의 매개변수가 아닌 HTTP 메시지의 엔터티 콘텐츠로 웹 서버에 보냅니다. URL 주소 전송, POST 방식을 사용하여 전송되는 데이터의 양은 GET 방식을 사용하는 것보다 훨씬 큽니다.
간단히 말하면 GET 방식은 적은 양의 데이터를 전송하고 처리 효율성이 높으며 보안성이 낮고 캐시되지만 POST의 경우 그 반대입니다.
get 메소드를 사용할 때 다음 사항에 유의하세요. :
1 get 요청(또는 URL 전달 매개변수와 관련된 모든 항목)의 경우 전달된 매개변수는 먼저 encodeURIComponent 메소드에 의해 처리되어야 합니다. 예: var url = "update.php?username=" encodeURIComponent(username) "&content=" encodeURIComponent
(content) "&id=1" ;
Post 메소드 사용 시 주의하세요 :
1. 헤더의 Context-Type을 application/x-www-form-urlencode로 설정하여 서버가 엔터티에 매개변수 변수가 있음을 알 수 있도록 합니다. 일반적으로 SetRequestHeader("Context-Type", "application) XmlHttpRequest 개체의 /x-www-form-urlencoded"가 사용됩니다."). 예:
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
2. 매개변수는 일대일 이름/값 대응을 갖는 키-값 쌍입니다. . 각 값 쌍은 앰퍼샌드로 구분됨을 사용합니다. 예를 들어 var name=abc&sex=man&age=18, var name=update.php?
abc&sex=man&age=18 및 var name=?abc&sex=man&age에 유의하세요. =18은 모두 잘못되었습니다.
3. 매개변수는 Send(매개변수) 메소드로 전송됩니다. 예: xmlHttp.send(name); get 메소드인 경우 직접 xmlHttp.send(null); 4. 서버측 요청 매개변수는 Get과 Post를 구별합니다. get 메소드인 경우 $username = $_GET["username"]; post 메소드인 경우 $username = $_POST["username"]; Post 및 Get 메소드는 다음과 같습니다
:
1. Post가 데이터를 전송할 때 URL에 표시할 필요는 없지만, Get 메소드는 URL에 표시되어야 합니다.
2.Post는 2M에 달하는 대용량 데이터를 전송하는 반면, Get 메소드는 URL 길이 제한으로 인해 약 1024바이트만 전송할 수 있습니다. 3.Post는 이름에서 알 수 있듯이 전송하는 것입니다. Get은 서버 세그먼트에서 데이터를 얻기 위한 것입니다. Get도 데이터를 전송할 수 있는 이유는 Post 정보가 http 요청의 내용으로 사용된다는 것을 서버에 알려주기 위한 것입니다. Get은 전송된 Http 헤더에 있습니다. get 메소드는 Request.QueryString["strName"]을 사용하여 수신합니다.
post 메소드는 Request.Form["strName"]을 사용하여 수신합니다.
참고:
두 가지 제출 방법을 통합할 수 있지만 , Request("strName ")를 사용하여 제출된 데이터를 가져오지만 이는 프로그램 효율성에 영향을 미치므로 권장되지 않습니다.
일반적으로 양식을 제출할 때 Get 메서드를 사용하지 마세요. 보안 문제가 발생할 수 있으므로
AJAX 잘못된 코드 문제
잘못된 코드의 원인:
1. xtmlhttp에서 반환된 데이터의 기본 문자 인코딩은 utf-8입니다. 클라이언트 페이지가 gb2312 또는 기타 인코딩된 데이터인 경우 잘못된 문자가 생성됩니다. 2. 게시물에서 제출된 데이터의 기본 문자 인코딩 방법은 utf-8입니다. 서버가 gb2312인 경우 그렇지 않으면 다른 인코딩된 데이터가 잘못된 문자를 생성합니다
해결 방법은
:
1. 클라이언트가 gb2312 인코딩인 경우 출력을 지정합니다. 서버의 스트림 인코딩
2. 서버 측 클라이언트와 클라이언트 모두 utf-8 인코딩을 사용합니다. gb2312:header('Content-Type:text/html;charset=GB2312') utf8: header('Content-Type:text/html;charset=utf -8');
참고: 위의 방법을 수행했지만 여전히 잘못된 문자를 반환하는 경우 해당 방법이 get 요청인지 확인하세요. URL 전달 매개변수 포함), 전달된 매개변수는 먼저 encodeURIComponent 메소드로 처리되어야 합니다. encodeURIComponent로 처리되지 않으면 왜곡된 문자도 생성됩니다.
제가 찾은 예는 다음과 같습니다. 제가 쓴 건 비교적 간단하고 표준적이지 않아서 다른 분들이 쓴 글을 참고하시는 게 좋을 것 같아요, 하하!
코드 복사