Декодирование строковых значений MySQL, закодированных с помощью php json_encode
Я пытаюсь передать ассоциативный массив PDO посредством JSON в некоторый код JavaScript. Я проверил, что код php работает так же, как и создание набора записей, но я получаю ошибки, используя $.parseJSON jquery для результатов. Первые три значения в возвращаемой структуре являются целыми числами, и синтаксический анализатор понимает их правильно. Как только он доберется до первого строкового значения, все ставки отключены. Сообщенная ошибка - это неожиданный токен, номер и т. Д., В зависимости от того, какое нечисловое поле анализируется. Даты, строки и т. Д. - все это относится к одной и той же проблеме.
Я посмотрел на другие темы здесь, на Stackru, и обнаружил, что многое кажется похожим, но ничего такого не было.
Вот пример возвращаемого массива JSON (взят из php-файла json_encode и приведен для краткости):
{ "idInventory":"451", "idAssociationGroup":"78","idMasterComponent":"601", "QuantityDescription":"Approx 4,450 GSY", "Quantity":null, "Location":"Hallways, Lobby, Locker Room, Library, and Lounge" }
Первые три элемента все размещаются корректно с помощью приведенного ниже кода, но количественное описание (и, конечно, все, что после него) завершается неудачно.
А вот часть части кода JavaScript, которая должна анализировать результаты и размещать их на экране:
$.getJSON(
path + "/Inventory/getComponent.php",
{idComponent: idComponent},
function (data) {
document.getElementById('idInventory').innerHTML = $.parseJSON(data.idInventory);
document.getElementById('idAssociationGroup').innerHTML = $.parseJSON(data.idAssociationGroup);
document.getElementById('idComponentsUsed').innerHTML = $.parseJSON(data.idMasterComponent);
document.getElementById('QuantityDescription').innerHTML = $.parseJSON(data.QuantityDescription);
/* more fields go here, but I've snipped them for brevity, since *
* the error is already exposed */
}
);
1 ответ
Избавьтесь от ваших звонков $.parseJSON
, Весь ответ JSON, и $.getJSON
разбирает это для вас автоматически. Отдельные поля - это просто обычные строки, а не JSON.
Итак, первое назначение должно быть:
document.getElementById('idInventory').innerHTML = data.idInventory;
и аналогично для всех других заданий.