今天我們來(lái)談一談js調(diào)用php接口,這在前端開(kāi)發(fā)中經(jīng)常會(huì)遇到。當(dāng)我們需要從后端獲取數(shù)據(jù)時(shí),就需要用到php接口來(lái)作為數(shù)據(jù)源,那么如何調(diào)用php接口呢?以下我們就來(lái)聊一聊。
首先,需要明確的是,調(diào)用php接口一般都是使用ajax來(lái)進(jìn)行異步請(qǐng)求,通過(guò)ajax可以后臺(tái)調(diào)用php頁(yè)面。以獲取后臺(tái)數(shù)據(jù)為例,代碼如下:
$.ajax({ url: 'example.php', //數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)路徑 data: { id: 123 }, type: 'POST', dataType: 'json', success: function(data){ console.log(data); } });
上述代碼中,通過(guò)url設(shè)置了訪(fǎng)問(wèn)路徑,通過(guò)data設(shè)置了post傳入的參數(shù),通過(guò)type設(shè)置了提交方式,通過(guò)dataType設(shè)置了返回?cái)?shù)據(jù)類(lèi)型。如果后端返回的數(shù)據(jù)格式為json,則可以在success中獲取data。
那么如何在php中處理請(qǐng)求呢?一個(gè)例子如下:
header("Content-Type:application/json;charset=utf-8"); $id = $_POST['id']; $sql = "SELECT * FROM example WHERE id = $id"; $result = mysql_query($sql); $rows = array(); while($row = mysql_fetch_assoc($result)){ $rows[] = $row; } echo json_encode($rows);
上述php代碼中,先通過(guò)header設(shè)置返回?cái)?shù)據(jù)類(lèi)型為json,接著通過(guò)$_POST獲取前端傳來(lái)的參數(shù),然后進(jìn)行數(shù)據(jù)庫(kù)操作,最后將獲取到的數(shù)據(jù)通過(guò)json_encode編碼成json數(shù)據(jù)返回給前端。
需要注意的是,在處理ajax請(qǐng)求時(shí),如果出現(xiàn)跨域問(wèn)題,則需要在php端加上相應(yīng)的header,如下:
header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Methods:POST,GET,OPTIONS'); header('Access-Control-Allow-Headers:x-requested-with,content-type');
以上即為使用js調(diào)用php接口的一些核心內(nèi)容,希望對(duì)前端開(kāi)發(fā)的同學(xué)們有所幫助。