这里是问题:json_encode PHP 5.5 VS 5.3不玩很好用JS
$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 :
我试过json_encoding内外的JavaScript的,没有任何事情似乎工作。
关于这一切的最困难的部分是,在PHP 5.5,我可以使用:
json_encode($locArr, JSON_PRETTY_TEXT | JSON_FORCE_OBJECT);
,一切工作正常。控制台将输出一个很好的OBJECT而不是一个字符串,没有任何错误。
有没有其他人遇到过这个问题,或者您有什么想法可以尝试其他的东西吗?
下面是我的代码的当前状态(我一直在交替添加/删除的几行代码,在一个时间):
中声明PHP的VAR:
$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":["","","",""], ...
您的声明'<? json_encode($ locArr,JSON_FORCE_OBJECT)?>'缺少'echo'。没有它,会生成JSON字符串,但根本没有使用。 – lxg 2014-08-27 20:43:30
我很抱歉误读了,这是一个错字。现在解决。 – woodfordreserve 2014-08-27 20:48:27
你不需要通过JSON.parse传递它。你可以做'var oLocations = <?= echo $ oLocations; ?>; – 2014-08-27 20:53:46