我已经遍历了所有可以在 Stack Overflow 和 Google 上找到的解决方案,但似乎没有一个有用。
我在 Clojure(Noir 框架)中有一个函数,它接受两个键,“text”和“day-of-note”,并将值插入到数据库中。无论是否有效,该函数都会返回带有 {"result":true} 的 JSON 响应(用于测试目的)。
(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>
在提交表单时,我添加了一个警报调用以显示数据字符串的内容并且它们的格式正确(“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;
});
});
当代码如上所示时,这里发生了什么,当用户单击按钮并且页面显示 {"result":true} 时,有一个对/newpost 的 HTML 调用。如果我注释掉“$.ajax”部分,消息框会弹出正确的内容,但如果我删除注释——没有消息框,直接进入/newpost。
我认为应该发生的是永远不会呈现/newpost 页面,但是 Ajax 会向它调用 dataString 和一个带有“成功!”的消息框。将被显示。
我哪里走错路了?
最佳答案
去掉success
函数声明后的分号:
success: function () {
alert("Success!");
}
success
函数声明是对象的一部分,用逗号分隔声明。
关于javascript - jQuery 提交不处理 "success",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149381/