Декодирование строковых значений 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;

и аналогично для всех других заданий.

Другие вопросы по тегам