欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ajax发送request:GET or POST  

程序员文章站 2022-06-10 11:23:46
...

用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;