diff --git a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
index 30cae98..0f7aa3f 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
@@ -1,5 +1,6 @@
 package eu.mulk.mulkcms2.benki.wiki;
 
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 import static javax.ws.rs.core.MediaType.TEXT_HTML;
 
 import eu.mulk.mulkcms2.benki.users.User;
@@ -16,6 +17,8 @@
 import java.time.temporal.TemporalAccessor;
 import java.util.Optional;
 import javax.inject.Inject;
+import javax.json.JsonObject;
+import javax.json.spi.JsonProvider;
 import javax.transaction.Transactional;
 import javax.ws.rs.BadRequestException;
 import javax.ws.rs.FormParam;
@@ -39,6 +42,8 @@
   private static DateTimeFormatter humanDateFormatter =
       DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG, FormatStyle.SHORT);
 
+  private static JsonProvider jsonProvider = JsonProvider.provider();
+
   @ResourcePath("benki/wiki/wikiPage.html")
   @Inject
   Template wikiPage;
@@ -71,14 +76,15 @@
   @Path("/{pageName}")
   @Authenticated
   @Transactional
-  public void updatePage(
+  @Produces(APPLICATION_JSON)
+  public JsonObject updatePage(
       @PathParam("pageName") String pageName,
       @FormParam("wiki-title") String title,
       @FormParam("wiki-content") String content) {
 
     if (title == null && content == null) {
       // No changes, nothing to do.
-      return;
+      return jsonProvider.createObjectBuilder().add("status", "ok").build();
     }
 
     if (title != null) {
@@ -112,6 +118,12 @@
             User.find("from BenkiUser u join u.nicknames n where ?1 = n", userName).singleResult());
 
     pageRevision.persistAndFlush();
+
+    return jsonProvider
+        .createObjectBuilder()
+        .add("status", "ok")
+        .add("content", pageRevision.enrichedContent())
+        .build();
   }
 
   @GET
diff --git a/src/main/resources/templates/benki/wiki/wikiPage.html b/src/main/resources/templates/benki/wiki/wikiPage.html
index 901b300..dbfc9c7 100644
--- a/src/main/resources/templates/benki/wiki/wikiPage.html
+++ b/src/main/resources/templates/benki/wiki/wikiPage.html
@@ -8,9 +8,11 @@
 <link rel="stylesheet" type="text/css" href="/web_modules/ContentTools/build/content-tools.min.css" />
 <script type="module">
   import {ContentTools} from "/web_modules/ContentTools.js";
+
   window.addEventListener('DOMContentLoaded', function() {
     let editor = ContentTools.EditorApp.get();
     editor.init('*[data-editable]', 'data-name');
+
     editor.addEventListener('saved', async function (ev) {
       let regions = ev.detail().regions;
       if (Object.getOwnPropertyNames(regions).length === 0) {
@@ -30,6 +32,15 @@
         body: requestParams
       });
 
+      let status = await response.json();
+      if (status.status === "ok") {
+        if (status.hasOwnProperty("content")) {
+          document.getElementById("wiki-content").innerHTML = status.content;
+        }
+      } else {
+        alert("Failed to save page: " + JSON.stringify(status));
+      }
+
       this.busy(false);
     });
   });
@@ -45,7 +56,7 @@
   </header>
 
   <main>
-    <div data-editable data-name="wiki-content">
+    <div data-editable data-name="wiki-content" id="wiki-content">
       {#with page}{enrichedContent.raw}{/}
     </div>
   </main>
