以下是问题所在:
$locArr是一个巨大的数组
然后将这些信息放入我使用的js中
var oLocations = <?= json_encode($locArr, JSON_FORCE_OBJECT) ?>;oLocations = json_encode($locArr);生成的代码
var oLocations = $.parseJSON( ,"LastDataBuild":"","Drop24Hour":"NO","Pickup24Hour":"NO","MileageUnit":"MI","AirportIndicator":"0",...注意第一个逗号,这将引发
Uncaught SyntaxError: Unexpected token ,
如果我将所有内容都用引号包装,使其计算为字符串,则会得到
Uncaught SyntaxError: Unexpected token : 我已经在javascript内外尝试过json_encoding,似乎没有任何东西可以工作。
所有这些中最困难的部分是,在PHP5.5中,我可以使用:
json_encode($locArr, JSON_PRETTY_TEXT | JSON_FORCE_OBJECT );
一切正常。控制台将输出一个很好的对象,而不是字符串,没有任何错误。
有没有其他人经历过这种情况,或者你对我可以尝试的其他事情有什么想法?
下面是我的代码的当前状态(我已经交替地添加/删除了几行代码。(一次):
在PHP中声明变量:
$oLocations = json_encode($locArr, JSON_FORCE_OBJECT);JS试图使用数组:
var oLocations = JSON.parse(<?= $oLocations ; ?>);
// while(oLocations.charAt(0) !== '"'){
// oLocations = oLocations.substr(1);
// };
// oLocations = '{' + oLocations;
// oLocations = $.parseJSON(oLocations);
// oLocations = JSON.parse(oLocations);
// console.log(oLocations);
// oLocations = $.parseJSON(oLocations);对于这个例子,JS抛出了这个"Uncaught SyntaxError: Unexpected token o ",这是它引用的代码:
var oLocations = $.parseJSON([{"RentalLocationID":"KBR","RentalLocationStatus":"Active","RentalLocationType":"Corporate","RentalLocationName":"KBR HOURS M-F 730-6 SAT 9-1 SUN 10-2","AddressLine1":"8555 JOHN CARPENTER FWY","AddressLine2":"","Latitude":"0","Longitude":"0","AddressCity":"DALLAS","AddressState":"TX","AddressStateName":"TEXAS","AddressZipCode":"75247","AddressCountry":"US","AddressCountryName":"UNITED STATES","PhoneNumber":"214-630-6555","AltPhoneNumber":"","FAXNumber":"","ConfirmMessage":["","","",""], ...发布于 2014-09-02 21:15:57
所以问题不在我的PHP或JS中。那是在Expressionengine里面。它捡起了"{“并试图用EE代码来解释它。最后,我们使用了一个漂亮的打印替代函数,该函数为键和值的每一行配对增加了中断。
发布于 2014-08-27 20:12:02
当数组嵌套到json_encode级别深度时,127+会出现问题。
如果你真的在处理一个巨大的数组,那可能就是它。
decode#refsect1-function.json-decode-returnvalues
编辑:同样奇怪的是,您没有回显最初的json_encode,而且它给了您结果。
https://stackoverflow.com/questions/25536041
复制相似问题