我正在從我的頁面收集一些數據,將數據存儲在數組中以便在頁面上多次使用,並通過AJAX發送數組副本,將數據存儲在數據庫中一個PHP頁面。數據我存儲在陣列中的打破JSON的HTML字符串( )
其中一幅是TinyMCE的所見即所得的編輯器的輸出,使其包含HTML,但剛剛發現這是一個問題 - 我會解釋:
進入後在我的所見即所得的編輯器一個文本行,我觸發我的AJAX事件,這是我的控制檯上顯示的JSON字符串和一切工作正常,數據庫被髮送和存儲:
{"id":"229","topic":"","title":"","description":"","content":"<p>fgfgfdg.</p>","keywords":""}
如果我寫了兩行文字,這是JSON字符串並且成功:
{"id":"229","topic":"","title":"","description":"","content":"<p>fgfgfdg.</p>\n<p>fgfgfdg</p>","keywords":""}
現在,如果我寫一行文本並按回車,而不是在第二行輸入任何內容,我會得到以下失敗。
{"id":"229","topic":"","title":"","description":"","content":"<p>fgfgfdgdfgdfgdfgdfg.</p>\n<p> </p>","keywords":""}
看來
以某種方式破壞了我的JSON輸出。我的PHP無法訪問已解碼的數組值,因爲沒有數組。 print_r(json_decode($json))
什麼都不返回。任何人都可以幫忙嗎?
這是我與jQuery的HTML頁面:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script>
var post_data = {};
post_data.id = post_id;
post_data.topic = topic;
post_data.title = title;
post_data.description = description;
post_data.content = tinyMCE.activeEditor.getContent();
post_data.keywords = keywords;
post_data = JSON.stringify(post_data);
save_post_request = $.ajax({
url: 'ajax/save-post.php',
type: 'POST',
data: "save_mode="+save_mode+"&post_data="+post_data,
dataType: 'text',
cache: false
});
</script>
這是我的PHP頁面:
header('Content-type: application/json; charset=UTF-8');
$post_data = isset($_POST['post_data']) ? $_POST['post_data'] : null;
$post_data_arr = json_decode($post_data, true);
$post_id = $post_data_arr['id'];
$topic = $post_data_arr['topic'];
// others
$content = $post_data_arr['content'];
if (!$post_data_arr['id']) {
// fails here
// id is not accessible when the JSON contains <p> </p> in the 'content' item
}
這是螢火蟲說:
什麼事情'的var_dump($ _ POST [ 'post_data'])'說明了什麼?看看JSON在那裏發生了什麼變化。如果是這樣,那麼你的jQuery代碼中的東西是在客戶端 –
@MarcB,感謝您的幫助,但現在感謝Qunetin解決了。喜歡使用'mangled'和'mangling':) – TheCarver