解码MySQL字符串值编码php json_encode


decoding MySQL string values encoded with php json_encode

我试图通过JSON传递一个PDO关联数组到一些javascript代码。我已经验证了php代码可以产生记录集,但我使用jquery的$得到错误。对结果执行parseJSON。返回结构中的前三个值都是整数,解析器可以正确地理解它们。但是,一旦它到达第一个字符串值,所有的赌注都取消了。报告的错误是一个意外的标记、数字等,这取决于正在解析哪个非数字字段。日期、字符串等都属于同样的问题。

我查看了StackOverflow上的其他线程,发现了许多看起来相似的线程,但没有一个是完全相同的问题。

下面是返回的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" }

前三个元素都通过下面的代码正确发布,但是QuantityDescription(当然还有它之后的任何内容)失败了。

这是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                                   */
    }
);

取消对$.parseJSON的呼叫。整个响应是JSON, $.getJSON会自动为您解析。单个字段只是普通的字符串,它们不是JSON。

所以第一个赋值应该是:

document.getElementById('idInventory').innerHTML = data.idInventory;