眾所周知,Vue是目前非常流行的前端框架之一,而PHP則是常用的后端語(yǔ)言。同時(shí)使用Vue和PHP做開(kāi)發(fā)的情形也越來(lái)越多,因此對(duì)于Vue跟PHP通信,我們需要了解一些知識(shí)點(diǎn)。
首先,我們得知道Vue如何進(jìn)行Ajax請(qǐng)求。Vue內(nèi)置了一個(gè)axios庫(kù),可以使用它來(lái)進(jìn)行數(shù)據(jù)請(qǐng)求,也可以使用Vue Resource庫(kù)來(lái)進(jìn)行通信。以下代碼是使用axios進(jìn)行數(shù)據(jù)請(qǐng)求:
axios.get('/api/data').then(response =>{ //處理返回的數(shù)據(jù) }).catch(error =>{ //處理錯(cuò)誤 })
這里要注意的是,我們通過(guò)axios請(qǐng)求的數(shù)據(jù)是異步的,也就是說(shuō),如果需要等到響應(yīng)的數(shù)據(jù)返回才能進(jìn)行下一步操作,那么需要將后續(xù)的操作寫在.then的回調(diào)函數(shù)中,錯(cuò)誤同理寫在.catch的回調(diào)函數(shù)中。
接下來(lái),就需要PHP跟Vue配合來(lái)實(shí)現(xiàn)數(shù)據(jù)通信了。前面提到的ajax請(qǐng)求中的/api/data就代表了一個(gè)API接口,也就是后端提供的一種方法來(lái)與前端進(jìn)行數(shù)據(jù)通信。所以我們需要在PHP中編寫代碼來(lái)實(shí)現(xiàn)這個(gè)API。
$data = array( 'name' =>'John', 'age' =>18, 'gender' =>'male' ); header('Content-type: application/json'); echo json_encode($data);
這里的代碼非常簡(jiǎn)單,通過(guò)PHP提供的json_encode函數(shù)將數(shù)組數(shù)據(jù)轉(zhuǎn)化為json格式返回即可。需要注意的是,在接口返回之前,需要設(shè)置header頭,將返回?cái)?shù)據(jù)設(shè)置為json格式。
另外,如果需要Vue向PHP提交數(shù)據(jù),也可以通過(guò)axios來(lái)實(shí)現(xiàn)。以下代碼是一個(gè)post請(qǐng)求的例子:
axios.post('/api/login', { username: 'John', password: '123456' }).then(response =>{ //處理返回的數(shù)據(jù) }).catch(error =>{ //處理錯(cuò)誤 })
這里需要注意的是,post請(qǐng)求將數(shù)據(jù)放在請(qǐng)求的body中進(jìn)行提交,因此需要使用axios的第二個(gè)參數(shù)來(lái)傳遞數(shù)據(jù)。同樣的,需要將后續(xù)操作寫在.then和.catch的回調(diào)函數(shù)中。
總的來(lái)說(shuō),Vue與PHP通信非常簡(jiǎn)單易懂,只需要使用Vue的內(nèi)置庫(kù)axios來(lái)進(jìn)行數(shù)據(jù)請(qǐng)求,同時(shí)在PHP中提供API即可。需要注意的是,在API返回?cái)?shù)據(jù)之前需要設(shè)置header頭為json格式,否則Vue無(wú)法處理返回的數(shù)據(jù)。如果需要Vue向PHP提交數(shù)據(jù),則需要將數(shù)據(jù)放在axios請(qǐng)求的第二個(gè)參數(shù)中。