В моем веб-проекте на Python Django я планирую добавить поддерживающую Ajax FORM, расположенную в самой правой части макета основного тела, в качестве окна опроса для кандидата в ученики.
Но как только я закончил элемент FORM и jQuery aJax в HTML (например, следующий org-list.html), даже щелчка кнопки формы не было даже действия щелчка или события. Я использовал проверку браузера, чтобы проверить и заметил, что все скрипты Jquery ajax были загружены правильно, при этом определение объекта представлений Django (в views.py) и настройка URL-адресов Django (в URLs.py) выглядели одновременно.
Итак, что-то не так с кодом Jquery или параметром с именем false в. Пожалуйста, помогите проверить и дать ваше ценное предложение.
Я использую инструмент IDE == Pycharm, Browser == Firefox, Python 3.6
org-list.html как показано ниже:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(function(){
$('#jsStayBtn').on('click', function(){
$.ajax({
cache: false,
type: "POST",
dataType: "json",
url:"{% url 'org:add_ask' %}", // "this url is redirect the same page but with msg from ajax".
data:$('#jsStayForm').serialize(),
async: true,
success: function(data) {
if(data.status == 'success'){
$('#jsStayForm')[0].reset();
alert("submit successfully")
}else if(data.status == 'fail'){
$('#jsCompanyTips').html(data.msg)
}
},
error: function(error) {
console.log('error')
// console.log(error.responseText.msg)
}
});
});
})
</script>
</head>
<body>
<div class="right companyright">
<div class="head">study survey</div>
<form class="rightform" id="jsStayForm">
<div>
<input type="text" name="name" id="companyName" placeholder="name" maxlength="25" />
</div>
<div>
<input type="text" name="mobile" id="companyMobile" placeholder="mobile"/>
</div>
<div>
<input type="text" name="course_name" id="companyAddress" placeholder="course name" maxlength="50" />
</div>
<p class="error company-tips" id="jsCompanyTips"></p>
<input class="btn" type="text" id="jsStayBtn" value="submit survey now >" />
{% csrf_token %}
</form>
</div>
</body>
</html>
организация \ просмотр.py
from .forms import UserAskForm
...
class AddUserAskView(View):
def post(self, request):
userask_form = UserAskForm(request.POST)
if userask_form.is_valid():
user_ask = userask_form.save(commit=True)
return HttpResponse("{'status':'success'}", content_type='application/json')
else:
return HttpResponse("{'status':'fail', 'msg':'Error during submission'}", content_type='application/json')
...
организация \ urls.py
from django.conf.urls import url, include
from .views import OrgView, AddUserAskView
urlpatterns = [
url(r'^list/$', OrgView.as_view(), name="org_list"),
url(r'^add_ask/$', AddUserAskView.as_view(), name="add_ask"),
]
организация \ forms.py
from django import forms
from operation. models import UserAsk
class UserAskForm(forms.ModelForm):
class Meta:
model = UserAsk
fields = ['name', 'mobile', 'course_name']
организация \ models.py
class UserAsk(models.Model):
name = models.CharField(max_length=20, verbose_name=u"name")
mobile = models.CharField(max_length=11, verbose_name=u"mobile")
course_name = models.CharField(max_length=50, verbose_name=u"course_name")
add_time = models.DateTimeField(default=datetime.now, verbose_name=u"add_time")
class Meta:
verbose_name = u"UserAsk"
verbose_name_plural = verbose_name
Я ожидаю, что событие click для кнопки формы может быть вызвано, а затем генерировать разные сообщения обратно в тег P формы (id = "jsCompanyTips) в зависимости от сериализованного статуса JSON (status == success или status == fail), но фактический вывод не выполняется в первом шаге щелчка.