我试图通过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;