這裏是問題: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