Я пытаюсь использовать JSON w/PHP для извлечения данных из базы данных MySQL и столкнулся с проблемой. Я возвращаю свою таблицу с сервера, за исключением тех случаев, когда я включаю поле «Комментарии» в свой запрос. Я проверил JSON в JSON LInt и вернулся. Запрос MySQL проверяется самостоятельно. И, глядя в firebug, я вижу SyntaxError: JSON.parse: плохой управляющий символ в строковом литерале в строке 1 столбца 184 данных JSON. Я просто получаю свой заголовок на странице. код: example.phpПроблема с получением данных MySQL с использованием JSON
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli("localhost", "*****", "*****", "inventory_form");
$result = $conn->query("SELECT Comments, FName, LName, Eqpmnt_Brwd, Date_Taken, Brwd_Rsn, Service_Tag FROM Inventory");
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"Comments":"' . $rs["Comments"] . '",';
$outp .= '"FirstName":"' . $rs["FName"] . '",';
$outp .= '"Eqpmnt_Brwd":"'. $rs["Eqpmnt_Brwd"] . '",';
$outp .= '"Date_Taken":"'. $rs["Date_Taken"] . '",';
$outp .= '"Brwd_Rsn":"'. $rs["Brwd_Rsn"] . '",';
$outp .= '"ServiceTag":"'. $rs["Service_Tag"] . '"}';
}
$outp .="]";
$conn->close();
echo($outp);
?>
index.html:
<!DOCTYPE html>
<html>
<head>
<style>
h1 {
border-bottom: 3px solid #cc9900;
color: #996600;
font-size: 30px;
}
table, th , td {
border: 1px solid grey;
border-collapse: collapse;
padding: 5px;
}
table tr:nth-child(odd) {
background-color: #f1f1f1;
}
table tr:nth-child(even) {
background-color: #ffffff;
}
</style>
</head>
<body>
<h1>SHS Inventory Form</h1>
<div id="id01"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "inventory_table.php";
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
myFunction(xmlhttp.responseText);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(response) {
var arr = JSON.parse(response);
var i;
var out = "<table>";
for(i = 0; i < arr.length; i++) {
out += "<tr><td>" +
arr[i].Comments +
"</td><td>" +
arr[i].FirstName +
"</td><td>" +
arr[i].Eqpmnt_Brwd +
"</td><td>" +
arr[i].Date_Taken +
"</td><td>" +
arr[i].Brwd_Rsn +
"</td><td>" +
arr[i].ServiceTag +
"</td></tr>";
}
out += "</table>"
document.getElementById("id01").innerHTML = out;
}
</script>
</body>
</html>
и образец текста ответа является:
"[{"Comments":"","FirstName":"Nadine","Eqpmnt_Brwd":"Apple Video Dongle","Date_Taken":"2014-09-05","Brwd_Rsn":"Returned","ServiceTag":""},{"Comments":"Wants to check out hovercam. Can retrieve it if anyone needs a hovercam.","FirstName":"Nicole ","Eqpmnt_Brwd":"Hovercam","Date_Taken":"2014-09-04","Brwd_Rsn":"Borrowed","ServiceTag":"075642"},{"Comments":"with SD card All six cameras borrowed on 9/8/14 will be used throughout that school week.Expected return date is Monday 9/15/14","FirstName":"George","Eqpmnt_Brwd":"Nikon D3100 Camera","Date_Taken":"2014-09-08","Brwd_Rsn":"Borrowed","ServiceTag":"074753"},{"Comments":"w/ SD card "
Есть ли проблема с некоторыми из текста в поле «Комментарии» требуется экранирование? Я смотрел онлайн, но не мог найти много на эту тему. Поймите, вы, вероятно, должны использовать PDO для этого, но примеры удачи. Я буду работать над этим, как только я вернусь к этому примеру.
Не пытайтесь создавать JSON вручную, вот что 'json_encode' для. Поместите все в массив и закодируйте его. – Barmar
не могли бы вы привести пример, пожалуйста. – alan
Возможный дубликат [Удаление последней запятой внутри цикла while - PHP] (http://stackoverflow.com/questions/25676956/removing-last-comma-within-while-loop-php) – Barmar