2012-02-05 56 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