$.post()请求发送数据的原理?

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请求,而且无论前端何种方式请求,后端都是统一方式获取发送的数据

请问这个$.post()方法的HTTP请求具体原理是为何?难道真是不用模拟表单的另一种请求方式?

阅读 2.1k
1 个回答

首先2不是模拟表单,表单应该是form-data,而2application/x-www-form-urlencoded
其次你把2中的代码封装一下,不就是3了吗?
而事实上1,2,3都只做了一件事情,就是满足http协议,然后发送它。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题