2014-09-05 69 views
1

所以我一直在掙扎JSON一段時間了,然而昨晚奇怪的事情發生了,甚至儘管我有「逃脫它帶來了一個錯誤,這是我的JSON字符串JSON解析失敗了藍色

var data = $.parseJSON('{"rows":[{"type":"row","width_class":"row new_row","column_class":"col3 column_model","columns":{"0":{"class":"column one","children":[]},"1":{"class":"column one","children":[{"type":"bullet-block","html":"<div class=\\"bullet-block-element\\"><ul><li style='padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");'>123</li><li style='padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");'>456</li><li style='padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");'>789</li></ul></div>","image":"http://example.com/includes/images/bulletins/large-0.png","size":"large","items":["123","456","789"]}]},"2":{"class":"column one","children":[]}}}]}'); 

這是通過產生

var data = $.parseJSON('<?= str_replace('\\','\\\\',base64_decode($data['d'])) ?>'); 

我只是爲盲人或有我有太多的紅牛?幫助將不勝感激!

回答

1

json_encode不會逸出,它會自動被暴露成JSON,你不需要$.parseJSON,那裏是雙解碼。

只需使用這樣的:

<?php 
$php = array('test' => 'hi'); 

$data['d'] = base64_encode(json_encode($php)); // 'eyJ0ZXN0IjoiaGkifQ==' 

?> 


<script> 

var data = <?php echo base64_decode($data['d']); ?>; 
console.debug(data.test); // Prints 'hi' in the console ;-) 

</script> 

見鍵盤:http://codepad.org/VmKGt0JD

+0

,它會將JSON字符串分配給數據變量,但是我需要的數據實際上是json對象? – 2014-09-05 11:06:21

+0

注意:PHP中沒有引號,它不會是一個字符串,它是實際的數據。 – DanFromGermany 2014-09-05 11:07:22

+1

你每天都會學到新的東西,謝謝! – 2014-09-05 11:11:29

0

你需要躲避'的,以及(S在html標籤tyles)

所以這將工作

var data = $.parseJSON('{"rows":[{"type":"row","width_class":"row new_row","column_class":"col3 column_model","columns":{"0":{"class":"column one","children":[]},"1":{"class":"column one","children":[{"type":"bullet-block","html":"<div class=\\"bullet-block-element\\"><ul><li style=\'padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");\'>123</li><li style=\'padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");\'>456</li><li style=\'padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");\'>789</li></ul></div>","image":"http://example.com/includes/images/bulletins/large-0.png","size":"large","items":["123","456","789"]}]},"2":{"class":"column one","children":[]}}}]}');

複製並粘貼到一個fiddle

+0

Howcome JSON.stringify不這樣做呢? – 2014-09-05 10:59:55

+0

@SauliusAntanavicius如果您有興趣,我還沒有研究過它,[mdn](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)。我通常會手動轉義所有內容(這裏有大多數服務器端語言的函數) – Collett89 2014-09-05 11:05:39