【问题标题】:Onclick button does not call js function in djangoOnclick按钮不调用django中的js函数
【发布时间】:2020-09-28 21:44:45
【问题描述】:

我有一个必须调用我的 js 函数的按钮,但是当我这样做时没有任何反应(没有获取请求)

我的 HTML:

<button type="button" id="checker" id="button{{answer.id}}" onclick="mark_as_correct({{answer.id}});">
</button>

我的 JS 函数:

function mark_as_correct(qid) {
    var csrftoken = getCookie('csrftoken');

    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader("X-CSRFToken", csrftoken);
            }
        }
    });

    $.ajax({
        url: 'url answerajaxcorrect',
        type: 'post',
        data: {id: qid},
        success: function(data) {
            document.getElementById('correct' + qid).innerHTML = "Correct!"
            var button = document.getElementById('button' + qid)
            button.parentNode.removeChild(button)
        },
        failure: function(data) {
            alert('error')
        }
    })
}

我确实将我的 js 包含到模板中:

{% load static %}
<script type="text/javascript" src="{% static 'js/main.js' %}"></script>

我的观点是这样的:

@login_required
def correct_ajax(request):
    qid = int(request.POST.get("id"))
    answer = get_object_or_404(Answer, id=qid)
    if answer.author == request.user:
        answer.is_correct = True
        answer.save()

        return JsonResponse({
            "is_correct": True,
        })
    else:
        return JsonResponse({
            "is_correct": False,
        })

我是 js 和 django 的新手,所以我很难理解我的问题的根源,请帮助。

【问题讨论】:

    标签: javascript html django ajax onclick


    【解决方案1】:

    onclick="mark_as_correct({{answer.id}});"

    您传递给onclick 的函数reference 需要能够采用event 参数。当您指向一个将参数分配给onclick 的函数时,浏览器将在读取时执行该函数,并将该函数的result 分配给onclick

    在您的情况下,您只需创建一个匿名函数即可:

    <button type="button" id="checker" id="button{{answer.id}}" onclick="function() { mark_as_correct({{answer.id}}) };">
    

    【讨论】:

    • 如果我理解正确,我的函数将被调用,但不是通过点击,但这不会发生。我尝试使用您的代码,乍一看,没有任何改变
    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2019-01-11
    相关资源
    最近更新 更多