【发布时间】:2011-03-13 12:51:19
【问题描述】:
我正在尝试将 ajax 表单提交添加到我的网页。表单会将用户的电子邮件添加到时事通讯中。我找到了这个解决方案:http://www.tutorialswitch.com/web-development/quick-and-simple-ajax-forms-with-json-responses/ 现在我正在尝试为 django 重写它。
所以我有我的表格,包含在主页上:
<div id="form-newsletter-message"></div>
<form action="{% url newsletter_add %}" method="post" class="form-newsletter" id="form-newsletter">
<input type="text" class="form-text" name="email" />
<input type="submit" value="Add" class="form-submit" />
</form>
这是我的 application.js,唯一的变化是表单的名称:
function setupAjaxForm(form_id, form_validations){
var form = '#' + form_id;
var form_message = form + '-message';
var disableSubmit = function(val){
$(form + ' input[type=submit]').attr('disabled', val);
};
$(form).ajaxSend(function(){
$(form_message).removeClass().addClass('loading').html('Loading...').fadeIn();
});
var options = {
dataType: 'json',
beforeSubmit: function(){
if(typeof form_validations == "function" && !form_validations()) {
return false;
}
disableSubmit(true);
},
success: function(json){
$(form_message).hide();
$(form_message).removeClass().addClass(json.type).html(json.message).fadeIn('slow');
disableSubmit(false);
if(json.type == 'success')
$(form).clearForm();
}
};
$(form).ajaxForm(options);
}
$(document).ready(function() {
new setupAjaxForm('form-newsletter');
});
网址:
urlpatterns = patterns('',
url(r'^newsletter_add/$', 'views.newsletter_add', name="newsletter_add"),
)
现在问题出在视图上。基于示例 .php 函数,我创建了这个:
if request.method == "POST":
try:
e = NewsletterEmails.objects.get(email = request.POST['email'])
message = _(u"Email already added.")
type = "success"
except NewsletterEmails.DoesNotExist:
logging.debug("nie dodany")
try:
e = NewsletterEmails(email = request.POST['email'])
except DoesNotExist:
pass
message = _(u"Email added successfully.")
type = "success"
e.save()
结果是当我单击提交按钮时,我得到“正在加载...”文本,然后什么也没有。提交按钮一直被禁用(直到我重新启动浏览器)但我的电子邮件地址被添加了。没有响应并且firebug 显示“500 Internal Server Error”我做错了什么?
【问题讨论】:
标签: jquery ajax django form-submit