HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),分别为:get,post,put, options,head,delete,trace,connect,
来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:
- OPTIONS:返回服务器针对特定资源所支持的
HTTP请求方法
,也可以利用向Web服务器发送’*’的请求来测试服务器的功能性。 - HEAD:向服务器索要
与GET请求相一致的响应
,只不过响应体将不会被返回
。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
- GET:【查】向特定的资源发出
请求
。 - POST:【改】向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的
修改
。 - PUT:【增】向指定资源位置
上传
其最新内容。如果URI不存在,则要求服务器根据请求创建资源;如果存在,服务器就接受请求内容,并修改URI的原始版本。 - DELETE:【删】请求服务器
删除
Request-URI所标识的资源。 - TRACE:
回显
服务器收到的请求,主要用于测试或诊断。 - CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。把请求连接转换到透明的 TCP/IP 通道。
上述方法中最基本的方法有4种,分别是GET,POST,PUT,DELETE。URI用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的【查,改,增,删】4个操作。
面试题:Get请求和post请求的区别
- 根本的区别:
GET是用于获取数据
,不会对数据进行更改;而POST是用于修改数据的
,会对数据进行更改。 - GET使用URL传参,数据放在URL里面
,在浏览器中是可见的,
非常不安全
;而POST是将数据放在请求体中
,用户不可见,相对比较安全
。 - GET传递的数据是放在URL里面的,虽然HTTP协议规范中没有对URL长度进行限制,但是由于浏览器及服务器的限制,所以
GET的URL会有长度上的限制
,而POST可发送的数据没有长度限制
。
*
常见Ajax请求方式:
1、通过远程HTTP Get 请求载入信息
相比于复杂的$.ajax而言,GET请求功能则显得更加简单,请求成功时可调用回调函数。当然如果需要在出错时执行函数,那么还请使用$.ajax。
语法:$(selector).get(url,data,success(response,status,xhr),dataType)
$.get("https://www.baidu.com/", function (data, status) {
alert("数据:" + data + "\n状态:" + status);
}).error(function(msg){
alert(JSON.stringify(msg))
});
参数:
url:必须,请求发送的地址。
data:可选,发送到服务器的数据。
success:可选,请求成功时运行的函数
- 1).response:包含结果的数据
- 2).status:包含请求的状态
- 3).xhr:包含XmlHttpRequest对象
dataType:服务器响应的数据类型,默认将智能判断
2、通过远程 HTTP POST 请求载入信息
POST请求功能也相对比较简单,请求成功时可调用回调函数。如果需要在出错时执行函数,那么请使用$.ajax请求。
语法:$(selector).post(url,data,success(data,status,jqXHR),dataType)
$.post("/Resources/addfriend.ashx", { "fid": fids, "fname": fnames, "tuid": tuids, "tuname": tunames }, function (data) {
if (data == "ok") {
alert("添加成功!");
}
})
参数:
url:必须,请求发送的地址。
data:可选,发送到服务器的数据。
success:可选,请求成功时运行的函数
- 1).data:包含结果的数据
- 2).status:包含请求的状态
- 3).jqXHR:包含XmlHttpRequest对象
dataType:服务器响应的数据类型,默认将智能判断
3、通过 HTTP GET 请求载入 JSON 数据
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
4、$.ajax()返回其创建的 XMLHttpRequest 对象
$.ajax() 只有一个参数:参数key/value对象,包含各配置及回调函数信息。
如果你指定了dataType选项,那么需要保证服务器返回正确的MIME信息,(如 xml 返回 “text/xml”)。
实例:
$.ajax({
url: '/Resources/GetList.ashx',
type: "post",
data: dataurl,
success: function (data) {
if (data != "") {
$("#pager").pager({ pagenumber: pagenumber, pagecount: data.split("$")[1], buttonClickCallback: PageClick });
$("#anhtml").html(data.split("$")[0]);
}
}
dataType: "html",
});