2015-07-10 269 views
0

如何在有人提交表單後出現彈出框?例如,在提交表單後,我想要一個彈出框顯示「已成功提交」。我現在的觀點是,它只是重定向到「成功提交」的頁面。而不是我想要一個彈出窗口與背景中的窗體出現。提交表單後彈出窗口django

def addDog(request): 
    if request.method == "POST": 
    form = DogForm(request.POST) 
    if form.is_valid(): 
     post = form.save(commit=False) 
     post.save() 
     return HttpResponse("Successfully submitted") 
    else: 
     print("Unable to save. Form is not valid") 
     print(form.errors) 
    else: 
    form = DogForm() 
    return render(request, "app/addDog.html", {"form":form}) 

回答

0

你需要在JavaScript中實現它。在較高的層面上,對您曾經使用過的同一端點發出AJAX POST請求。成功後,請使用window.alert("Successfully submitted!")

如果這是您的網站上JS的程度,然後jQuery是一個有點矯枉過正,但它是最簡單的使用來舉個例子jQuery的:

$("#submit-button").on("click", function() { 
    $.post("http://some/endpoint/here", $("#my-form").serialize()) 
     .done(function() { window.alert("Successfully submitted!"); }) 
     .fail(function() { window.alert("Submission failed!"); }); 
}); 

在此使用的功能是:$.post$().on$().serialize

這可以在vanilla JavaScript中沒有太多問題的情況下實現,但它更加冗長,所以我不打算在這個例子中使用它。

+0

這似乎並沒有顯示輸入錯誤時的錯誤消息。當我提交表單時,它應該告訴我我錯過了一個字段,但它仍然提交它(即使它沒有被數據庫接受)。 – abden003

+0

您必須在JS中進行驗證或在Django中進行驗證,然後在JS中解析響應。如果你這樣做,你不會得到免費的Django錯誤消息。這將需要額外的工作(可能很多)。我建議看看'django-ajax'。也許這會讓事情變得更容易 –