Ich habe eine Dashboard-Seite, um die letzten fünf Tage Anwesenheitsdaten aus der Datenbank anzuzeigen. Dafür Skript aus Aufruf einer Funktion, die ich in separaten .js-Datei definiert. Mit der PHP-Funktion senden Sie die Daten zurück an Javascript als Callbackdata. Ich bin in Javascript, ich weiß nicht, wie man diese Array-Daten verarbeitet. Eigentlich habe ich diese Idee von einer Beispielanwendung, die gut mit Strings funktioniert, aber ich konnte nicht für die Arrays codieren. Index.php SeiteSenden von Array als Callbackdata in JS von PHP
<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 Datei:
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");
});
In PHP-Datei im Datum bekommen und es als Array übergeben, ich brauche nur Datum und Gesamtstunden an diesem Datum.
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);
}
Aber hier kommt die Kontrolle nicht in $ .each Schleife. WANN überprüfe ich mit dem folgenden Code, ob die Punches Array sind oder nicht, indem ich den folgenden Code verwende. IT zeigt als nicht Array.
if(Object.prototype.toString.call(punches) === '[object Array]') {
this.showMessage("yes","It's array");
}
else
this.showMessage("No","Its no array");
Innen simRes Klasse:
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);
}
}
neues simRes (simRes :: SUCCESS, $ dayMap); - Es antwortet mit JSON? Kannst du eine Antwort geben? – num8er
tun dies: Display.method ('getlastPunchSuccessCallBack', Funktion (CallBackData) {console.log (callBackData); öffnen Sie Inspektor-Panel und geben Sie uns console.log – num8er
Es zeigt als 'null' in Inspektor-Panel – Anu