首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json_encode php5.5vs5.3对js不友好

json_encode php5.5vs5.3对js不友好
EN

Stack Overflow用户
提问于 2014-08-27 20:05:57
回答 2查看 850关注 0票数 0

以下是问题所在:

$locArr是一个巨大的数组

然后将这些信息放入我使用的js中

代码语言:javascript
复制
var oLocations = <?= json_encode($locArr, JSON_FORCE_OBJECT) ?>;

oLocations = json_encode($locArr);生成的代码

代码语言:javascript
复制
var oLocations = $.parseJSON( ,"LastDataBuild":"","Drop24Hour":"NO","Pickup24Hour":"NO","MileageUnit":"MI","AirportIndicator":"0",...

注意第一个逗号,这将引发

Uncaught SyntaxError: Unexpected token ,

如果我将所有内容都用引号包装,使其计算为字符串,则会得到

代码语言:javascript
复制
Uncaught SyntaxError: Unexpected token : 

我已经在javascript内外尝试过json_encoding,似乎没有任何东西可以工作。

所有这些中最困难的部分是,在PHP5.5中,我可以使用:

json_encode($locArr, JSON_PRETTY_TEXT | JSON_FORCE_OBJECT );

一切正常。控制台将输出一个很好的对象,而不是字符串,没有任何错误。

有没有其他人经历过这种情况,或者你对我可以尝试的其他事情有什么想法?

下面是我的代码的当前状态(我已经交替地添加/删除了几行代码。(一次):

在PHP中声明变量:

代码语言:javascript
复制
    $oLocations = json_encode($locArr, JSON_FORCE_OBJECT);

JS试图使用数组:

代码语言:javascript
复制
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 ",这是它引用的代码:

代码语言:javascript
复制
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":["","","",""], ...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-02 21:15:57

所以问题不在我的PHP或JS中。那是在Expressionengine里面。它捡起了"{“并试图用EE代码来解释它。最后,我们使用了一个漂亮的打印替代函数,该函数为键和值的每一行配对增加了中断。

票数 0
EN

Stack Overflow用户

发布于 2014-08-27 20:12:02

当数组嵌套到json_encode级别深度时,127+会出现问题。

如果你真的在处理一个巨大的数组,那可能就是它。

decode#refsect1-function.json-decode-returnvalues

编辑:同样奇怪的是,您没有回显最初的json_encode,而且它给了您结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25536041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档