Wex5案例使用JSON傳輸Thinkphp後端對接,以達成資料正常輸出
阿新 • • 發佈:2019-01-23
初步接觸Wex5,操作起來還是覺得比較複雜!而且教程不多,讓我著實比較煩躁!
因此自己動手豐衣足食!還是比較實在的!
我們使用Wex5的仿淘寶APP案例進行初步的資料對接!
這裡呼叫的本地的固定.json輸出!而我們做的app資料怎麼可能是固定的呢?而大多數專案都是和PC&WAP連在一塊的!因此為了多端統一的資料!我們就必須統一使用一個數據庫作為儲存!而又不想寫太多程式碼!可以直接呼叫Thinkphp的JS輸出!為了和案例保持一致!那麼你需要對輸出做些變動!
我們首先在Thinkphp的專案裡新建一個API檔案!初步命名為ApitpAction.class.php作為對接APP的介面的檔案!
這樣我們可以看到輸出結果正常輸出中哦!其它對接以此舉一反三即可!
到了這裡最關鍵的一步到了!為什麼我要使用output_data來做為輸出JSON?下面我們要針對這個做一個特別的處理!就是跨域輸出處理!
好了教程到此結束!如果你不是直接輸出陣列的話,那麼你可能需要用到以下程式碼:
因此自己動手豐衣足食!還是比較實在的!
我們使用Wex5的仿淘寶APP案例進行初步的資料對接!
開啟Wex5專案,U12/demo/taobao/main.js找到以下程式碼:
Model.prototype.goodsDataCustomRefresh = function(event) { /* * 1、載入商品資料 */ var url = require.toUrl("./main/json/goodsData.json"); allData.loadDataFromFile(url, event.source, true); };
這裡呼叫的本地的固定.json輸出!而我們做的app資料怎麼可能是固定的呢?而大多數專案都是和PC&WAP連在一塊的!因此為了多端統一的資料!我們就必須統一使用一個數據庫作為儲存!而又不想寫太多程式碼!可以直接呼叫Thinkphp的JS輸出!為了和案例保持一致!那麼你需要對輸出做些變動!
我們首先在Thinkphp的專案裡新建一個API檔案!初步命名為ApitpAction.class.php作為對接APP的介面的檔案!
根據上述goodsData.json檔案,我們得到相應的資料庫欄位!為了簡單的演示!因此我們在資料庫中的goods表與此對應!當然在正式專案中你得使用自己的欄位對接!
public function goods() {
$result=M('goods')->where($where)->order("id desc")->select();
output_data($result); //直接輸出陣列
}
Model.prototype.goodsDataCustomRefresh = function(event) { /* * 1、載入商品資料 */ var url = require.toUrl("<span style="background-color: rgb(255, 255, 255);">http://127.0.0.1/Apitp/goods</span>"); allData.loadDataFromFile(url, event.source, true); };
這樣我們可以看到輸出結果正常輸出中哦!其它對接以此舉一反三即可!
到了這裡最關鍵的一步到了!為什麼我要使用output_data來做為輸出JSON?下面我們要針對這個做一個特別的處理!就是跨域輸出處理!
因此我們在thinkphp專案下的common.php裡對output_data進行處理!將以下程式碼複製至common.php即可:
function output_data($datas, $extend_data = array(), $error = false) {
$data = $datas;
$jsonFlag = 0 && C('debug') && version_compare(PHP_VERSION, '5.4.0') >= 0
? JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
: 0;
if ($jsonFlag) {
header('Content-type: text/plain; charset=utf-8');
}
if (!empty($_GET['callback'])) {
echo $_GET['callback'].'('.json_encode($data, $jsonFlag).')';die;
} else {
header("Access-Control-Allow-Origin:*");
echo json_encode($data, $jsonFlag);die;
}
}
好了教程到此結束!如果你不是直接輸出陣列的話,那麼你可能需要用到以下程式碼:
<span style="background-color: rgb(255, 255, 255);"><span style="color:#999999;">function output_data($datas, $extend_data = array(), $error = false) {
$data = array();
if(!empty($extend_data)) {
$data = array_merge($data, $extend_data);
}
$data['datas'] = $datas;
$jsonFlag = 0 && C('debug') && version_compare(PHP_VERSION, '5.4.0') >= 0
? JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
: 0;
if ($jsonFlag) {
header('Content-type: text/plain; charset=utf-8');
}
if (!empty($_GET['callback'])) {
echo $_GET['callback'].'('.json_encode($data, $jsonFlag).')';die;
} else {
header("Access-Control-Allow-Origin:*");
echo json_encode($data, $jsonFlag);die;
}
}</span></span>
是不是很簡單呢!這樣就不需要擔心跨域問題了!!