Ajax发送request:GET or POST

用Ajax发送请求到服务器端有Get跟Post两种方式:


GET:

xmlhttp.open("GET","demo_get.asp?fname=Henry&lname=Ford",true);
xmlhttp.send();

 
用Get的方式发送,要把参数编辑到URL中。用“?”隔离文件地址,用“&”分隔各个参数。


POST:

xmlhttp.open("POST","demp_post.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
function send(arg)
     {
        CreateXMLHttpRequest();
        xmlhttp.onreadystatechange = callhandle;
        //xmlhttp.open("GET","Default.aspx?goback=yes&arg=" + arg,true);
        xmlhttp.open("POST","Default.aspx?goback=yes",true);
        xmlhttp.setRequestHeader("Content-Length",arg.lenght);
        xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");  //用POST的时候一定要有这句 
        xmlhttp.send(arg);  // arg ist a JSON object or some other object  }

 
用Post发送,需要在send函数中指定发送的参数(如果没有参数,send(null))。另外还需要设置头信息。



相比POST,用Get方式发送request更快,更简单。但是在以下的集中情况中,应该用POST来发送Request:

    • A cached file is not an option (update a file or database on the server)
    • Sending a large amount of data to the server (POST has no size limitations)
    • Sending user input (which can contain unknown characters), POST is more robust and secure than GET



Asynchronous - True or False?
XMLHttpRequest.open("GETorPost",url,Asynchronous)中最后一个参数表示是否是异步处理(true,false)。

如果Asynchronous=true,则表示,回调函数将会在Server端的Response正确返回的时候再执行:

xmlhttp.onreadystatechange=function()
  {
	if(xhr.readyState==4){
		if(xhr.status==200){
                     doSomething();
		}
  }
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

 


如果Asynchronous=false(不推荐),JS代码不会继续运行,直到服务器已经有响应。需要注意的是,如果服务器因为某种原因响应缓慢,或者长时间没有相应,将导致页面卡顿甚至卡死。

在用false做参数的情况下,不需要写onreadystatechange function,只需要将要执行的动作放到send函数之后即可

xmlhttp.open("GET","ajax_info.jsp",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

相关推荐