鍍金池/ 問(wèn)答/PHP  HTML/ $.post()請(qǐng)求發(fā)送數(shù)據(jù)的原理?

$.post()請(qǐng)求發(fā)送數(shù)據(jù)的原理?

1、我們知道,一般的表單請(qǐng)求是這醬紫的

//前端
<form method="post" action="php.php"> 
    <input type="text" name="username" />
</form>

//后端
//php.php
$username = $_POST['username']

2、xhr對(duì)象的原生ajax請(qǐng)求是這樣的:

var xmlhttp = new XMLHttpRequst();
xmlhttp.open("POST","/statics/demosource/demo_post2.php",true);

//必須設(shè)置了這個(gè)請(qǐng)求頭,模擬表單,后端依然通過(guò)表單的name字段獲取值
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlhttp.send("fname=Henry&lname=Ford");

原生的ajax post request,依然是模擬表單,后端還是通過(guò)表單的name字段獲取值

3、$.post()實(shí)現(xiàn)的HTTP請(qǐng)求:

//前端
$.post('web.php', { "username": "lofayo" }, function(data) {
    console.log(data)
})

//后端
//web.php
$username = $_POST['username']

其實(shí),這個(gè)我就不太理解了,最原始的HTTP請(qǐng)求通過(guò)表單實(shí)現(xiàn),前面的三種方法也都是模擬表單請(qǐng)求實(shí)現(xiàn),唯獨(dú)這種放卻不是模擬表單,卻依然能夠?qū)崿F(xiàn)HTTP請(qǐng)求,而且無(wú)論前端何種方式請(qǐng)求,后端都是統(tǒng)一方式獲取發(fā)送的數(shù)據(jù)

請(qǐng)問(wèn)這個(gè)$.post()方法的HTTP請(qǐng)求具體原理是為何?難道真是不用模擬表單的另一種請(qǐng)求方式?

回答
編輯回答
孤星

首先2不是模擬表單,表單應(yīng)該是form-data,而2application/x-www-form-urlencoded。
其次你把2中的代碼封裝一下,不就是3了嗎?
而事實(shí)上1,2,3都只做了一件事情,就是滿足http協(xié)議,然后發(fā)送它。

2018年7月9日 11:17