jquery ajax не работает при отправке кнопки в сериализованной форме - PullRequest
0 голосов
/ 06 апреля 2019

В моем веб-проекте на 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), но фактический вывод не выполняется в первом шаге щелчка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...