Я пытаюсь получить массив 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 работают хорошо.
Можете ли вы помочь мне выяснить, откуда возникает эта ошибка?
Заранее спасибо!