Ошибка при разборе массива JSON из http-ответа от запроса php / sql: неожиданный токен в JSON в позиции 0 в JSON.parse - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь получить массив JSON из базы данных mySQL с помощью php-скрипта.Вот соответствующая функция php:

function load_kid_table(){

    // Load datas and connect to database
    @$postdata = file_get_contents("php://input");
    @$request = json_decode($postdata);
    require_once '../connect.php';
    @$mysqli = connect();

    @$user_id = $request->{'userId'};
    @$filter = $request->{'filter'};
    @$project_id = $filter->{'project_id'};

    // Do the request
    @$SQLrequest = "SELECT kid.*, kid.was_delivered AS 'kid_delivered', kid.fpy AS 'kid_fpy', product_line.product_line_description AS 'product_line_name', m.description AS 'milestone_description' FROM kid
    LEFT JOIN product_line ON product_line.product_line_id = kid.product_line_id
    LEFT JOIN milestone as m ON m.milestone_id = kid.milestone_id
    WHERE kid.project_id = $project_id;";

    //Add filters

    if (@$filter->{'kid_id'}) { // Filter on ID
        $SQLrequest .= " AND kid.kid_id = '".$filter->{'kid_id'}."'";
    }
    if (@$filter->{'description'}) { // Filter on description
        $SQLrequest .= " AND kid.description LIKE '%".$filter->{'description'}."%'";
    }
    if (@$filter->{'type'}) { // Filter on his type
        $SQLrequest .= " AND kid.type = '".$filter->{'type'}."'";
    }
    if (@$filter->{'product_line_name'}) { // Filter on description
        $SQLrequest .= " AND kid.product_line_name = '".$filter->{'product_line_name'}."'";
    }
    if (@$filter->{'milestone_description'}) { // Filter on his dependency
        $SQLrequest .= " AND m.description LIKE '%".$filter->{'milestone_description'}."%'";
    }
    if (@$filter->{'product_line_id'}) { // Filter on product line id
        $SQLrequest .= " AND kid.product_line_id = '".$filter->{'product_line_id'}."'";
    }
    if (@$filter->{'provider_id'}) { // Filter on provider
        $SQLrequest .= " AND kid.provider_id LIKE '%".$filter->{'provider_id'}."%'";
    }
    if (@$filter->{'provider_add_info'}) { // Filter on provider info
        $SQLrequest .= " AND kid.provider_add_info LIKE '%".$filter->{'provider_add_info'}."%'";
    }
    if (@$filter->{'requester_id'}) { // Filter on requester
        $SQLrequest .= " AND kid.requester_id LIKE '%".$filter->{'requester_id'}."%'";
    }
    if (@$filter->{'requester_add_info'}) { // Filter on requester info
        $SQLrequest .= " AND kid.requester_add_info LIKE '%".$filter->{'requester_add_info'}."%'";
    }
    if (@$filter->{'criticity'}) { 
        $SQLrequest .= " AND kid.criticity = '".$filter->{'criticity'}."'";
    }
    if (@$filter->{'maturity'}) {
        $SQLrequest .= " AND kid.maturity = '".$filter->{'maturity'}."'";
    }
    if (@$filter->{'fpy'}) { 
        $SQLrequest .= " AND kid.fpy = '".$filter->{'fpy'}."'";
    }
    if (@$filter->{'delivery_date'}) {
        $SQLrequest .= " AND kid.delivery_date = '".$filter->{'delivery_date'}."'";
    }
    if (@$filter->{'need_date'}) {
        $SQLrequest .= " AND kid.need_date = '".$filter->{'need_date'}."'";
    }
    if (@$filter->{'lower_need_date'}) {
        $SQLrequest .= " AND kid.need_date >= '".$filter->{'lower_need_date'}."'";
    }
    if (@$filter->{'upper_need_date'}) {
        $SQLrequest .= " AND kid.need_date <= '".$filter->{'upper_need_date'}."'";
    }
    if (@$filter->{'lower_delivery_date'}) {
        $SQLrequest .= " AND kid.delivery_date >= '".$filter->{'lowerdelivery_date'}."'";
    }
    if (@$filter->{'upper_delivery_date'}) {
        $SQLrequest .= " AND kid.delivery_date <= '".$filter->{'upper_delivery_date'}."'";
    }
    if (@$filter->{'lower_planned_date'}) {
        $SQLrequest .= " AND kid.planned_date >= '".$filter->{'lower_planned_date'}."'";
    }
    if (@$filter->{'upper_planned_date'}) {
        $SQLrequest .= " AND kid.planned_date <= '".$filter->{'upper_planned_date'}."'";
    }

    // Add order
    if (@$filter->{'order'}){
        $SQLrequest .= " ORDER BY ".$filter->{'order'}. " ASC";
    }       

    @$res=array();
    if (@$SQLresult = $mysqli->query($SQLrequest)) {
        while ($row = $SQLresult->fetch_assoc()) {
            $res[] = $row;
        }

        $SQLresult->free();
    }

    // Return results
    @$json=json_encode($res);
    echo($json);
    exit;

}

Вот ответ http-запроса, выполненного из службы в моем приложении Angular 5:

SyntaxError: Неожиданный токен вJSON в позиции 0 в JSON.parse () в XMLHttpRequest.onLoad (webpack-internal: ///../../../common/esm5/http.js: 2289: 51) в ZoneDelegate.invokeTask (webpack-internal: ///../../../../zone.js/dist/zone.js: 421: 31) в Object.onInvokeTask (webpack-internal: ///../../../core/esm5/core.js:4967:33) в ZoneDelegate.invokeTask (webpack-internal: ///../../../../zone.js/dist/zone.js: 420:36) в Zone.runTask (webpack-internal: ///../../../../zone.js/dist/zone.js: 188: 47) в ZoneTask.invokeTask [как вызов] (веб-пакет)-internal: ///../../../../zone.js/dist/zone.js: 496: 34) в invokeTask (webpack-internal: ///../../ ../../zone.js/dist/zone.js:1540:14) в XMLHttpRequest.globalZoneAwareCallback (webpack-internal: ///../../../../zone.js/dist/zone.js: 1566: 17)

Текстовый ответ ниже - это JSON aЯ ищу, но после некоторых исследований в начале строки я получил специальный символ:

"[{"kid_id":"1","description":"liste AD applicable + issue","type":"1","project_id":"120","milestone_id":"693","product_line_id":"2","provider_id":"zanneta","provider_add_info":"","requester_id":"vinays","requester_add_info":"","criticity":"2","maturity":"3","fpy":"","need_date":"2018-08-15","planned_date":"2018-08-15","was_delivered":"N","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":"2018-09-19 17:04:04","kid_delivered":"N","kid_fpy":"","product_line_name":"Other","milestone_description":null},{"kid_id":"2","description":"Contrat client","type":"1","project_id":"120","milestone_id":"693","product_line_id":"2","provider_id":"castac","provider_add_info":null,"requester_id":"castac","requester_add_info":null,"criticity":"2","maturity":"3","fpy":"Y","need_date":"2018-09-01","planned_date":"2018-09-01","was_delivered":"Y","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":null,"kid_delivered":"Y","kid_fpy":"Y","product_line_name":"Other","milestone_description":null},{"kid_id":"3","description":"Position orbital","type":"2","project_id":"120","milestone_id":"693","product_line_id":"2","provider_id":"castac","provider_add_info":null,"requester_id":"","requester_add_info":null,"criticity":"1","maturity":"2","fpy":"Y","need_date":"2018-09-03","planned_date":"2018-09-03","was_delivered":"Y","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":null,"kid_delivered":"Y","kid_fpy":"Y","product_line_name":"Other","milestone_description":null},{"kid_id":"4","description":"Analyse de risque system (RAO)","type":"1","project_id":"120","milestone_id":"693","product_line_id":"2","provider_id":"castac","provider_add_info":"","requester_id":"castac","requester_add_info":"","criticity":"2","maturity":"3","fpy":"Y","need_date":null,"planned_date":"2018-09-04","was_delivered":"","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":"2018-09-20 10:22:40","kid_delivered":"","kid_fpy":"Y","product_line_name":"Other","milestone_description":null},{"kid_id":"5","description":"Liste lanceur applicables et des d?rogs","type":"1","project_id":"120","milestone_id":"694","product_line_id":"3","provider_id":"castac","provider_add_info":"","requester_id":"durieze","requester_add_info":"","criticity":"3","maturity":"1","fpy":"N","need_date":"2018-09-05","planned_date":"2018-09-05","was_delivered":"","delivery_date":null,"modified":"1","input_modified":"0","creation_date":null,"modification_date":"2018-09-19 17:04:42","kid_delivered":"","kid_fpy":"N","product_line_name":"Altimetry","milestone_description":null},{"kid_id":"6","description":"Life time + EOR duration","type":"1","project_id":"120","milestone_id":"693","product_line_id":"2","provider_id":"vinays","provider_add_info":"AIT","requester_id":"zanneta","requester_add_info":"DTF","criticity":"2","maturity":"3","fpy":"Y","need_date":"2018-08-06","planned_date":"2018-08-11","was_delivered":"Y","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":"2018-08-23 12:25:10","kid_delivered":"Y","kid_fpy":"Y","product_line_name":"Other","milestone_description":null},{"kid_id":"7","description":"Cas de chargement Payload Op?rationnels","type":"1","project_id":"120","milestone_id":"0","product_line_id":"0","provider_id":"-1","provider_add_info":"","requester_id":"-1","requester_add_info":"","criticity":"2","maturity":"3","fpy":"","need_date":"2018-09-08","planned_date":"2018-09-07","was_delivered":"N","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":"2018-09-12 11:15:37","kid_delivered":"N","kid_fpy":"","product_line_name":null,"milestone_description":null},{"kid_id":"8","description":"Conf plateforme EOR et G\/O","type":"1","project_id":"120","milestone_id":"693","product_line_id":"2","provider_id":"castac","provider_add_info":null,"requester_id":"zanneta","requester_add_info":null,"criticity":"2","maturity":"1","fpy":"","need_date":"2018-09-08","planned_date":"2018-09-08","was_delivered":"Y","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":"2018-08-17 17:07:21","kid_delivered":"Y","kid_fpy":"","product_line_name":"Other","milestone_description":null},{"kid_id":"9","description":"Product SOA Solar Array","type":"1","project_id":"120","milestone_id":"696","product_line_id":"2","provider_id":"zanneta","provider_add_info":null,"requester_id":"castac","requester_add_info":null,"criticity":"2","maturity":"2","fpy":null,"need_date":"2018-09-09","planned_date":"2018-09-09","was_delivered":"","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":null,"kid_delivered":"","kid_fpy":null,"product_line_name":"Other","milestone_description":"Delayed milestone"},{"kid_id":"10","description":"Product SOA SADM G3","type":"1","project_id":"120","milestone_id":"696","product_line_id":"2","provider_id":"castac","provider_add_info":"","requester_id":"zanneta","requester_add_info":"","criticity":"1","maturity":"3","fpy":"","need_date":"2018-09-01","planned_date":"2018-09-01","was_delivered":"N","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":"2018-08-28 09:35:10","kid_delivered":"N","kid_fpy":"","product_line_name":"Other","milestone_description":"Delayed milestone"},{"kid_id":"11","description":"Product SOA ADPMX+e\/HRM2x","type":"1","project_id":"120","milestone_id":"50","product_line_id":"0","provider_id":"vinays","provider_add_info":"","requester_id":"-1","requester_add_info":"","criticity":"3","maturity":"2","fpy":"","need_date":"2018-09-12","planned_date":"2018-09-12","was_delivered":"N","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":"2018-09-12 11:15:39","kid_delivered":"N","kid_fpy":"","product_line_name":null,"milestone_description":"Constituants : STB EGSE EMH V2"},{"kid_id":"12","description":"D?finition des sc?narios d?ouverture\/fermeture \ndes ex","type":"1","project_id":"120","milestone_id":"693","product_line_id":"1","provider_id":"zanneta","provider_add_info":null,"requester_id":"vinays","requester_add_info":null,"criticity":"3","maturity":"1","fpy":"Y","need_date":"2018-09-12","planned_date":"2018-09-12","was_delivered":"","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":null,"kid_delivered":"","kid_fpy":"Y","product_line_name":" ","milestone_description":null},{"kid_id":"24","description":"","type":"0","project_id":"120","milestone_id":"693","product_line_id":"1","provider_id":"","provider_add_info":null,"requester_id":"","requester_add_info":null,"criticity":"0","maturity":"0","fpy":"","need_date":null,"planned_date":null,"was_delivered":"","delivery_date":null,"modified":"0","input_modified":"0","creation_date":null,"modification_date":null,"kid_delivered":"","kid_fpy":"","product_line_name":" ","milestone_description":null},{"kid_id":"32","description":"","type":null,"project_id":"120","milestone_id":"1","product_line_id":null,"provider_id":"TBD","provider_add_info":null,"requester_id":"TBD","requester_add_info":null,"criticity":null,"maturity":null,"fpy":null,"need_date":null,"planned_date":null,"was_delivered":null,"delivery_date":null,"modified":"0","input_modified":"0","creation_date":"2018-09-14 10:26:58","modification_date":"2018-09-14 10:26:58","kid_delivered":null,"kid_fpy":null,"product_line_name":null,"milestone_description":"ADR"},{"kid_id":"33","description":"","type":null,"project_id":"120","milestone_id":"1","product_line_id":null,"provider_id":"TBD","provider_add_info":null,"requester_id":"TBD","requester_add_info":null,"criticity":null,"maturity":null,"fpy":null,"need_date":null,"planned_date":null,"was_delivered":null,"delivery_date":null,"modified":"0","input_modified":"0","creation_date":"2018-09-17 14:30:48","modification_date":"2018-09-17 14:30:48","kid_delivered":null,"kid_fpy":null,"product_line_name":null,"milestone_description":"ADR"},{"kid_id":"34","description":"","type":null,"project_id":"120","milestone_id":"1","product_line_id":null,"provider_id":"TBD","provider_add_info":null,"requester_id":"TBD","requester_add_info":null,"criticity":null,"maturity":null,"fpy":null,"need_date":null,"planned_date":null,"was_delivered":null,"delivery_date":null,"modified":"0","input_modified":"0","creation_date":"2018-09-17 17:26:38","modification_date":"2018-09-17 17:26:38","kid_delivered":null,"kid_fpy":null,"product_line_name":null,"milestone_description":"ADR"},{"kid_id":"35","description":"","type":null,"project_id":"120","milestone_id":"1","product_line_id":null,"provider_id":"TBD","provider_add_info":null,"requester_id":"TBD","requester_add_info":null,"criticity":null,"maturity":null,"fpy":null,"need_date":null,"planned_date":null,"was_delivered":null,"delivery_date":null,"modified":"0","input_modified":"0","creation_date":"2018-09-19 18:36:15","modification_date":"2018-09-19 18:36:15","kid_delivered":null,"kid_fpy":null,"product_line_name":null,"milestone_description":"ADR"}]"

При проверке сетевого запроса я вижу, что «красная точка» соответствуетнеправильный символ.Похоже, это символ \ ufeff.

Параллельно все остальные запросы из моих других скриптов php работают хорошо.

Можете ли вы помочь мне выяснить, откуда возникает эта ошибка?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...