У меня есть файл php, и он работает для анализа данных из mysql в формате json вот результат, который я получаю,
"{\"records\":[{\"EmpName\":\"Justin\",\"EmpAddress\":\"New York\",
\"emp_email\":\"[email protected]\"},{\"EmpName\":\"Mark\",\"EmpAddress
\":\"Canada\",\"emp_email\":\"[email protected]\"},{\"EmpName\":\"Sachin
\",\"EmpAddress\":\"India\",\"emp_email\":\"[email protected]
\"},{\"EmpName\":\"Rachel\",\"EmpAddress\":\"Australia\",\"emp_email
\":\"[email protected]\"},{\"EmpName\":\"John\",\"EmpAddress
\":\"Russia\",\"emp_email\":\"[email protected]\"}]}"
Это мой угловой код
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
<?php $url = '"' . $url . '/customers_mysql.php"';
?>
console.info(<?php echo $url; ?>);
$http.get(<?php echo $url; ?>)
.then(function(response) {
console.info("test");
console.info(response.data);
$scope.names = response.data.records;
});
});
Это мой контроллер в моем html файле
<div ng-app = "myApp" ng-controller = "customersCtrl">
<table>
<tr ng-repeat = "x in names">
<td>{{x.EmpName}}</td>
<td>{{x.EmpAddress}}</td>
<td>{{x.emp_email}}</td>
</tr>
</table>
</div>
Я не вижу никаких данных на экране или сообщений об ошибках в консоли. Я вижу, что json показывает данные в порядке, используя console.info (response.data); Он отображается в консоли, но angular не отображает данные на странице? Есть идеи, почему он не анализирует данные? Это из-за записей перед json? Я попытался удалить также «записи:» перед json, но тогда он тоже не отображается.
Обновлено: Это в моем файле php для анализа данных из массива в json
$outp = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "") {$outp .= ",";}
$outp .= '{"EmpName":"' . $rs["EmpName"] . '",';
$outp .= '"EmpAddress":"' . $rs["EmpAddress"] . '",';
$outp .= '"emp_email":"'. $rs["emp_email"] . '"}';
}
$outp ='{"records":['.$outp.']}';
$mysqli->close();
echo json_encode($outp);
Ваш response.data интерпретируется как json? Если Вы можете разместить где-нибудь снимок экрана console.info (response.data)? Я думаю, ваша строка может не анализироваться как json, а вместо этого интерпретироваться как строка
это мои данные ответа в консоли oi66.tinypic.com/zjb7fd.jpg
Не создавайте JSON вручную ... это много лишней работы и подвержено ошибкам. Создайте массив php с данными, и как только он будет создан, используйте echo json_encode($data);. См. json_encode () документы
@charlietfl добавил часть моего php-кода, который мне нужно получить из базы данных, у меня есть json-код в конце
также установите json следующим образом в заголовке файла php (Content-Type: application / json);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы дважды кодируете json. json_encode выполняет кодировку за вас, вам просто нужно заполнить массив. Попробуйте что-нибудь вроде
$outp = [];
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
$outp [] = ["EmpName"=>$rs["EmpName"],
"EmpAddress" => $rs["EmpAddress"],
"emp_email" => $rs["emp_email"]];
}
$mysqli->close();
echo json_encode(["records" => $outp]);
Спасибо! Вот так это работает :-) Так что всегда лучше хранить сначала в массиве php, а затем закодировать слова. Intersting, чтобы знать!
@TomJacobs Рад, что это помогло
Вы сами создаете строку json в php, тогда как вам нужно просто создать массив. Затем вы json_encode массив, а не строку
Попробуйте изменить на:
$outp = array("records" => array());
while ($rs = $result - > fetch_array(MYSQLI_ASSOC)) {
$outp["records"][] = array(
"EmpName" => $rs["EmpName"],
"EmpAddress" => $rs["EmpAddress"],
"emp_email" => $rs["emp_email"]
);
}
$mysqli - > close();
echo json_encode($outp);
Спасибо, похоже на ответ Якуба Иуды. Он работает с вышеуказанным решением. Спасибо за помощь!
Верно ... но мои усилия и вопросы привели к фактической проблеме, которая не была очевидна в исходном коде, который был показан. Запомни
будет ли этот код отлично работать в Angular 2? Или нужно что-то менять?
То, как вы отправляете json из серверной части, не имеет ничего общего с тем фреймворком, который вы используете во внешней части.
Имеет ли фактический вывод php внешние кавычки, как показано? Если да, то не должно и то, как они добавляются, подозрительно.