1、我们知道,一般的表单请求是这酱紫的
//前端
<form method="post" action="php.php">
<input type="text" name="username" />
</form>
//后端
//php.php
$username = $_POST['username']
2、xhr对象的原生ajax请求是这样的:
var xmlhttp = new XMLHttpRequst();
xmlhttp.open("POST","/statics/demosource/demo_post2.php",true);
//必须设置了这个请求头,模拟表单,后端依然通过表单的name字段获取值
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
原生的ajax post request,依然是模拟表单,后端还是通过表单的name字段获取值
3、$.post()实现的HTTP请求:
//前端
$.post('web.php', { "username": "lofayo" }, function(data) {
console.log(data)
})
//后端
//web.php
$username = $_POST['username']
其实,这个我就不太理解了,最原始的HTTP请求通过表单实现,前面的三种方法也都是模拟表单请求实现,唯独这种放却不是模拟表单,却依然能够实现HTTP请求,而且无论前端何种方式请求,后端都是统一方式获取发送的数据
首先
2
不是模拟表单,表单应该是form-data
,而2
是application/x-www-form-urlencoded
。其次你把
2
中的代码封装一下,不就是3
了吗?而事实上
1,2,3
都只做了一件事情,就是满足http
协议,然后发送它。