2012-02-05 55 views
1

我已经通过所有的解决方案,我能找到的堆栈溢出和谷歌走了,但他们都不来帮忙。jQuery的提交不处理“成功”

我用Clojure(比诺框架)函数可以接受两个键,“文本”和“一天的音符”,并插入值到数据库中。无论是否有效,该函数都会返回带有“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> 

在提交表格我添加了一个电话,提醒我展示dataString的内容和格式正确无误(“文本= LALALA &一天的音符=真正的”)。

$(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当此按钮,用户点击该页面显示{“结果”:真}。如果我注释掉“$ .ajax” - 在弹出的消息框中包含正确的内容,但是如果我删除了注释 - 没有消息框,请直接转到/ newpost。

我认为是应该发生的是,/ newpost页永远不会被渲染,但与dataString通话将被阿贾克斯,并与一个消息框来向它提出的“成功了!”将被显示。

我在哪里走错转弯?

+0

您有一个额外的分号成功后':函数(){}'。尝试删除它,看看它是否更好。 – 2012-02-05 12:58:21

回答

2

success的函数声明之后卸下分号:

success: function() { 
    alert("Success!"); 
} 

success的函数声明是一个对象,它由逗号分隔的声明的一部分。

+1

+1斑点 – Jivings 2012-02-05 12:57:43