要用javascript調(diào)用php獲取數(shù)據(jù)庫(kù)接口,是一個(gè)很常見(jiàn)的前后端交互操作
創(chuàng)新互聯(lián)是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、企業(yè)網(wǎng)站建設(shè),外鏈,廣告投放平臺(tái)為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
通過(guò)javascript發(fā)送http請(qǐng)求php的API接口,php連接數(shù)據(jù)庫(kù)并查詢結(jié)果,最后返回出來(lái)
這樣javascript就能獲取到數(shù)據(jù)庫(kù)的數(shù)據(jù)
三中接受方式:
$_GET ? ?//get過(guò)來(lái)的數(shù)據(jù)
$_POST ?//post過(guò)來(lái)的數(shù)據(jù)
file_get_contents("php://input") ? //接口過(guò)來(lái)的xml等字符串?dāng)?shù)據(jù)用這個(gè)接
這三個(gè)方法足以接受任何數(shù)據(jù)了,具體你還要百度一下用法
通常情況下用戶使用瀏覽器網(wǎng)頁(yè)表單向服務(wù)器post提交數(shù)據(jù),我們使用PHP的$_POST接收用戶POST到服務(wù)器的數(shù)據(jù),并進(jìn)行適當(dāng)?shù)奶幚?。但有些情況下,如用戶使用客戶端軟件向服務(wù)端php程序發(fā)送post數(shù)據(jù),而不能用$_POST來(lái)識(shí)別,那又該如何處理呢?
我們介紹php接受post數(shù)據(jù)的三種方式:
1.$_POST方式接收數(shù)據(jù)
$_POST方式是通過(guò) HTTP POST 方法傳遞的變量組成的數(shù)組,是自動(dòng)全局變量。如使用$_POST[‘name’]就可以接收到網(wǎng)頁(yè)表單以及網(wǎng)頁(yè)異步方式post過(guò)來(lái)的數(shù)據(jù),
即$_POST只能接收文檔類型為Content-Type: application/x-www-form-urlencoded提交的數(shù)據(jù),也就是表單POST過(guò)來(lái)的數(shù)據(jù)。
2.$GLOBALS[‘HTTP_RAW_POST_DATA’]方式接收數(shù)據(jù)
但$GLOBALS[‘HTTP_RAW_POST_DATA’]中是否保存POST過(guò)來(lái)的數(shù)據(jù)取決于centent-Type的設(shè)置,只有在PHP在無(wú)法識(shí)別的Content-Type的情況下,才會(huì)將POST過(guò)來(lái)的數(shù)據(jù)原樣地填入變量$GLOBALS[‘HTTP_RAW_POST_DATA’]中,像Content-Type=application/x-www-form-urlencoded時(shí),該變量是空的。
另外,它同樣無(wú)法讀取Content-Type為multipart/form-data的POST數(shù)據(jù),也需要設(shè)置php.ini中的always_populate_raw_post_data值為On,PHP才會(huì)總把POST數(shù)據(jù)填入變量$http_raw_post_data。
3.php://input方式接收數(shù)據(jù)
如果訪問(wèn)原始 POST 數(shù)據(jù)的更好方法是 php://input。php://input 允許讀取 POST 的原始數(shù)據(jù)。和 $HTTP_RAW_POST_DATA 比起來(lái),它給內(nèi)存帶來(lái)的壓力較小,并且不需要任何特殊的php.ini設(shè)置,php://input不能用于 enctype=”multipart/form-data”。對(duì)于未指定 Content-Type 的POST數(shù)據(jù),則可以使用file_get_contents(“php://input”)來(lái)獲取原始數(shù)據(jù)。事實(shí)上,用PHP接收POST的任何數(shù)據(jù)都可以使用本方法。而不用考慮Content-Type,包括二進(jìn)制文件流也可以。php://input讀取不到$_GET數(shù)據(jù)。是因?yàn)?
1、直接file_get_contents("php://input") 這個(gè)函數(shù)就可以接到接口傳參!
2、建議使用json格式數(shù)據(jù)進(jìn)行交互。
根據(jù)你的代碼,你是用的是POST方法。
要在PHP中整體接收POST數(shù)據(jù),有兩種方法。
注意,要使用以下兩種方法,Content-Type不能為multipart/form-data。
方法一:
使用:
file_get_contents('php://input')
其中,php://input是一個(gè)流,可以讀取沒(méi)有處理過(guò)的POST數(shù)據(jù)(即原始數(shù)據(jù))。相較于$HTTP_RAW_POST_DATA而言,它給內(nèi)存帶來(lái)的壓力較小,并且不需要特殊的php.ini設(shè)置。
方法二:
使用此方法,需要設(shè)置php.ini中的always_populate_raw_post_data值為On。
使用$HTTP_RAW_POST_DATA,包含了POST的原始數(shù)據(jù)。但這不是一個(gè)超全局變量,要在函數(shù)中使用它,必須聲明為global,或使用$GLOBALS['HTTP_RAW_POST_DATA']代替。