私は最後の5日間の出席データをデータベースから取得するためのダッシュボードページを持っています。そのためには、スクリプトのimから別の.jsファイルで定義した関数を呼び出します。 PHP関数を使用して、私はコールバックデータとしてJavascript関数にデータを送り返します。私はJavascriptで、私はこの配列データを処理する方法を知らない。実際に私は文字列でうまく動作する1つのサンプルアプリケーションからこのアイデアを得ましたが、配列をコード化できませんでした。 index.phpページPHPからのJSのコールバックデータとして配列を送信
<div class="inner">
<table class="table table-borderless table-condensed ">
<thead><tr><th>Date</th><th>Total</th></tr></thead>
<tbody id ="attendancelist">
</tbody>
</table>
</div>
<script>
modJs.getlastfiveattendance();
</script>
JSファイル:PHPファイルで
Display.method('getlastfiveattendance', function() {
var that = this;
var object = {"emp_id":empId};
var reqJson = JSON.stringify(object);
var callBackData = [];
callBackData['callBackData'] = [];
callBackData['callBackSuccess'] = 'getlastPunchSuccessCallBack';
callBackData['callBackFail'] = 'getlastPunchFailCallBack';
this.customAction('getLastfive','modules=attendance',reqJson,callBackData);
});
Display.method('getlastPunchSuccessCallBack', function(callBackData) {
var punches = callBackData;
$('#attendancelist').html('');
var row = '<tr><td>_date_</td><td>_total_</td></tr>';
$.each(punches, function(key, value) { //here i have to process this array to get each data
var trow = row;
trow = trow.replace(/_date_/g,Date.parse(key).toString('MMM d, yyyy (dddd)'));
trow = trow.replace(/_total_/g,value);
html += trow;
});
$('#attendancelist').html(html);
});
Display.method('getlastPunchFailCallBack', function(callBackData) {
this.showMessage("error","Failed to Retrieve data");
});
、イムデータを取得し、ちょうど私は、その特定の日の日付と合計時間を必要とし、配列として渡します。
public function getLastfive($req){
empid = $req->emp_id;
$attendance = new Attendance();
$attendanceList = $attendance->Find("employee = ? ORDER BY id DESC LIMIT 5",array(empid));
$dayMap = array();
foreach($attendanceList as $attendance){
$dayMap[$attendance->in_time] = $attendance->note; //emp in_time as key and the total time as value
}
return new simRes(simRes::SUCCESS,$dayMap);
}
しかし、ここでコントロールは$ .eachループに入りません。私は次のコードを使用して、パンチが配列かどうかを確認する次のコードでチェックします。 ITは配列ではないことを示します。
if(Object.prototype.toString.call(punches) === '[object Array]') {
this.showMessage("yes","It's array");
}
else
this.showMessage("No","Its no array");
インサイドsimResクラス:あなたのPHPの一部で
:
class SimRes{
const SUCCESS = "SUCCESS";
const ERROR = "ERROR";
var $status;
var $data;
public function __construct($status,$data = null){
$this->status = $status;
$this->data = $data;
}
public function getStatus(){
return $this->status;
}
public function getData(){
return $this->data;
}
public function getJsonArray(){
return array("status"=>$this->status,"data"=>$this->data);
}
}
新しいsimRes(simRes :: SUCCESS、$ dayMap)。それはjsonと反応しますか?あなたは応答の例を挙げることができますか? – num8er
これを行います:Display.method( 'getlastPunchSuccessCallBack'、function(callBackData){console.log(callBackData);インスペクタパネルを開き、console.logの結果を返します – num8er
インスペクタパネルで 'null'と表示されます – Anu