AJAX 오픈 메소드의 첫 번째 매개변수는 전송 메소드를 나타내는 것으로 알고 있습니다. 많은 정보에 따르면 GET, POST, HEAD 및 서버에서 지원하는 기타 전송 메소드를 사용하여 변수를 전송할 수 있습니다. 그런데 POST와 GET의 실제 차이점은 무엇이며, 실제 인코딩 과정에서 어떻게 구현해야 할까요?
(참고: 전달 방법은 RFC2068의 조항 및 지침을 참조하십시오.)
AJAX의 send 방법은 누구나 알고 있듯이 일반적인 상황에서는 null 값이 전달됩니다. 하지만 아래의 post 메소드에서는 매개변수가 send() 메소드에 전달됩니다.
POST의 경우 데이터를 저장하기 위해 데이터를 사용할 수 있지만 GET의 경우 매개변수가 고유해야 합니다(그렇겠죠??)
GET 프로세스에서는 매개변수와 함께 전송됩니다. URL은 다음과 같습니다. http://localhost/ajaxtest/proceajax.php?name=stven&pws=123
그러나 POST 과정에서 전송해야 할 데이터 정보는 ? 번호 뒤에서 직접 얻을 수 있습니다.
post_data=name=stven&pws=123
js를 사용한 루프 추가
if (ajax_request_type == "GET") {
if (uri.indexOf (" ?") == -1)
uri = uri + "?rs=" + func_name;
else
uri = uri + "&rs=" + func_name;
for (i = 0; i < args.length-1; i++)
uri = uri + "&rsargs[]=" + args[i];
uri = uri + "&rsrnd=" + new Date().getTime () ;
post_data = null;
} else {
post_data = "rs=" + func_name;
for (i = 0; i < args.length-1; i++)
post_data = post_data + "&rsargs[]=" + urlencode(args[i]);
}
function ajax_run(action_name,uri,request_type,postvar) {
var post_data;
ajaxok = ajax_init_object();
if(request_type == "POST"){
uri = uri + "?nocache=" + new Date().getTime();
}else {
uri = uri + "&nocache=" + new Date().getTime();
}
if(ajaxok){
ajaxok.open(request_type, uri, false) ;
if (request_type == "POST") {
ajax.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
ajax.setRequestHeader("Content -Type ", "application/x-www-form-urlencoded");
}
ajaxok.onreadystatechange = ajax_complete;
ajaxok.send(post_data);
ajaxok = null;
}
}