Я рассмотрел все решения, которые я смог найти в Stack Overflow и Google, но ни одно из них, похоже, не помогло.
У меня есть функция в Clojure (платформа Noir), которая берет два ключа: «текст» и «день заметки» и вставляет значения в базу данных. Независимо от того, работает это или нет, функция возвращает ответ JSON с {"result": true} (для целей тестирования).
(defpage [:post "/newpost"] {:keys [text day-of-note]}
[]
(println "newpost called")
(post text)
(response/json {:result true}))
Моя форма - это простая форма с одной текстовой областью, флажком и кнопкой.
<form action="/newpost" id="new-post" method="post">
<textarea id="entry" name="text">Insert todays happenings</textarea>
<br />
<input checked="checked" name="day-of-note" type="checkbox" value="true">
<input type="submit" value="Add entry">
</form>
При отправке формы я добавил вызов, чтобы показать мне содержимое dataString, и они правильно отформатированы ("text = lalala & day-of-note = true").
$(function () {
$("#new-post").submit(function (e) {
e.preventDefault();
var dataString = $("#new-post").serialize();
alert(dataString);
$.ajax({
url: "/newpost",
type: "POST",
dataType: "json",
data: dataString,
success: function () {
alert("Success!");
};
});
return false;
});
});
Что происходит здесь, когда код такой же, как и выше, при нажатии пользователем кнопки происходит вызов HTML / newpost, и на странице отображается {"result": true}. Если я закомментирую часть «$ .ajax», появится всплывающее окно с правильным содержимым, но если я удалю комментарии - нет сообщения, просто перейду прямо к /newpost.
Я думал, что должно было случиться, что страница / newpost никогда не будет отображаться, но Ajax будет вызывать вызов с dataString и окно с сообщением «Success!» будет показано.
Где я повернул не туда?