Чтобы сделать мой сайт редактируемым с помощью инструментов содержимого
Я добавил Content Tools на свой сайт Package Mules. У меня есть разделы, которые можно редактировать публикой. На данный момент безопасность не вызывает беспокойства, это очень маленький сайт.
Это дает мне галочку, которую он сохранил, в отличие от того, где я получаю ошибку "Х". Как вы можете видеть в этом скринкасте. Но когда я обновляю страницу, кажется, что она фактически не спасла.
https://github.com/JGallardo/package-mules
<!DOCTYPE hmtl>
<html lang="en">
<?php include 'includes/head.html';?>
<body>
<?php include 'includes/nav.html';?>
<section class="container">
<div class="row">
<div class="col-md-12">
<h1>Package Mules</h1>
<p>Welcome to the future home of package mules. Our mission is to help bring movers together with low cost options for moving.</p>
<p>We set up an editable page so we can get public feedback. Please be considerate and only post appropriate content.</p>
</div>
</div>
</section>
<section class="container">
<div class="row">
<div class="col-md-12">
<h2>The thing you hate most about moving is?</h2>
</div>
<div class="col-md-12">
<div data-editable data-name="moving-1">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-2">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-3">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-4">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-5">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-6">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
</div>
</div>
</seciton>
<?php include 'includes/footer.html';?>
<?php include 'includes/scripts.html';?>
<script>
window.addEventListener('load', function() {
var editor;
ContentTools.StylePalette.add([
new ContentTools.Style('Author', 'author', ['p'])
]);
editor = ContentTools.EditorApp.get();
editor.init('*[data-editable]', 'data-name');
editor.bind('save', function (regions) {
var name, payload, xhr;
// Set the editor as busy while we save our changes
this.busy(true);
// Collect the contents of each region into a FormData instance
payload = new FormData();
for (name in regions) {
if (regions.hasOwnProperty(name)) {
payload.append(name, regions[name]);
}
}
// Send the update content to the server to be saved
function onStateChange(ev) {
// Check if the request is finished
if (ev.target.readyState == 4) {
editor.busy(false);
if (ev.target.status == '200') {
// Save was successful, notify the user with a flash
new ContentTools.FlashUI('ok');
} else {
// Save failed, notify the user with a flash
new ContentTools.FlashUI('no');
}
}
};
xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', onStateChange);
xhr.open('POST', '/index.php');
xhr.send(payload);
var_dump($_POST);
});
});
</script>
</html>
Я считаю, что проблема здесь в var_dump($_POST);
звоните, вы являетесь JavaScript. Я не PHP-кодер, но я предполагаю, что вызов PHP и что он должен быть в тегах PHP.
Причины, по которым это работает, заключается в том, что после этой ошибки onStateChange
обратный вызов onStateChange
. Таким образом, процесс событий выглядит примерно так:
save
вызывающее ваш код сохранения.index.php
и затем отправляет его на сервер.var_dump($_POST);
выражение. Эта ошибка приводит к остановке выполнения кода и поэтому никогда не возвращается в редактор, что означает, что редактор фактически не покидает режим редактирования.onStateChange
обратный вызов, зарегистрированный ранее (onStateChange
).onStateChange
вызов onStateChange
устанавливает редактор в состояние onStateChange
сообщение OK, потому что вы получили ответ 200 от index.php
.Это дает иллюзию, что все прошло нормально, когда на вашем JavaScript была ошибка. При проверке консоли вы должны увидеть ошибку.