Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как принять данные из PHP в Javascript и вставить их в объекты класса (https://javascript.ru/forum/misc/63725-kak-prinyat-dannye-iz-php-v-javascript-i-vstavit-ikh-v-obekty-klassa.html)

SeanPaul 25.06.2016 16:02

как принять данные из PHP в Javascript и вставить их в объекты класса
 
Здравствуйте, такая проблема, создал классы работников:
'use strict'

'use strict'
class Emp{
    constructor(name, surname, ptrnmc, zpt){
        this.name = name;
        this.surname = surname;
        this.ptrnmc = ptrnmc;
        this.zpt = zpt;
    }

    middleMonthSalary(){
        return (this.zpt)*12/12;
    }
}


class EmpWithHourlySalary extends Emp{
    constructor(name, surname, ptrnmc, zpt, zptInHour){
      super(name, surname, ptrnmc, zpt);
      this.zptInHour = zptInHour;
    }
    middleMonthSalary(){
        return (this.zptInHour)*8*2.8;
    }

}

class  EmpWithFixedSalary extends Emp{
    constructor(name, surname, ptrnmc, zpt){
        super(name, surname, ptrnmc, zpt);
    }
    middleMonthSalary(){
        return (this.zpt)*8*2.8;
    }
}


Затем создал функцию которая по идее должна обрабатывать пришедший запрос, ну и сам запрос:
var employeers = [];
function inObjs(data) {
    var employs = [];
    for(var i = 0;i<data.length;i++){
        employs[i] = JSON.parse(data[i]);
    }
    for(var j = 0;j<employs.length;j++){
        employeers[j] = employs[j];
    }
}

$.ajax({

    url: 'getListOfAllWorkers.php',
    type: 'get',
    success: function(data){
        inObjs(data);
    }

});


И PHP-код, который будет отправлять(по идее) данные:

<?php 
 require 'connection.php';
$sql="SELECT * FROM emps";
$result = mysqli_query($conn,$sql);


while($row = mysqli_fetch_array($result)) {
    echo json_encode($row['id']);
    echo json_encode($row['name']);
    echo json_encode($row['surname']);
    echo json_encode($row['patronymic']);
    echo json_encode($row['zpt']);
    echo json_encode($row['hourlyzpt']);


}

?>


Ну и собственно вопрос, если опустить мелкие огрехи в виде несоответствия количества полей(например нет id в конструкторе класса), насколько данный код рабочий? И будет ли он работать как задумывался, а то пока что проверить нет возможности. А задумывался он так: PHP отправляет данные, они достаются функции inObjs(), в ней они через цикл вставляются в массив объектов класса Emp, или его потомков(это еще предстоит реализовать). Главный вопрос пока что в том, правильно ли я реализовал передачу данных из PHP в javascript? Критика приветствуется.

laimas 25.06.2016 17:09

Цитата:

Сообщение от SeanPaul
насколько данный код рабочий?


На 100% не рабочий - второе же echo json_encode($row['name']); породит ошибку на клиенте ибо возвращается клиенту не JSON, а жуткая смесь. Да и какой прок в echo json_encode($row['name']);, так можно было бы просто каждое значение передавать, вопрос только в том как во всем этом разбираться серверу.

И проку от классов нет ибо, если даже пусть было бы корректно, фактически отдается простой индексный массив. А сервер должен возвращать массив объектов для клиента (ассициативный массив) и после его полного формирования из запроса.

while(($con[] = mysql_fetch_assoc($result)) || array_pop($con));
exit(json_encode($con))


PS. После внимательного взгляда "на клиента" ) - класс для порождения объекта, значит mysql_fetch_row вместо mysql_fetch_assoc и клиент получит массив массивов.

SeanPaul 26.06.2016 17:34

spasibo


Часовой пояс GMT +3, время: 20:18.