未捕获的语法错误。在<input id={{供应商.id }}中出现无效或意外的标记。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未捕获的语法错误。在<input id={{供应商.id }}中出现无效或意外的标记。相关的知识,希望对你有一定的参考价值。

我试图在输入[type='checkbox']上点击函数提交表单,而不使用ajax-jquery刷新页面。另外,我正在开发一个Django Web应用程序。

下面是我的表单元素代码

{% if vendor.accountEnabled %}
    <form id="form" action="{% url 'change_account_switch' vendor.id %}"
                                              method="post">
    {% csrf_token %}
        <div class="custom-control custom-switch">     
             <input onclick="switchAcc('{{ vendor.id }}customSwitch1');"
                                                       type="checkbox"
                                                       name="switch"
                                                       class="custom-control-input" id="{{ vendor.id }}customSwitch1"
                                                       checked>
             <label class="custom-control-label" for="{{ vendor.id }}customSwitch1">Enable</label>
        </div>
    </form>
{% else %}
    <form id="form" action="{% url 'change_account_switch' vendor.id %}"
                                              method="post">
          {% csrf_token %}
          <div class="custom-control custom-switch">
                <input onclick="switchAcc('{{ vendor.id }}customSwitch1');"
                                                       type="checkbox"
                                                       name="switch"
                                                       class="custom-control-input" id="{{ vendor.id }}customSwitch1">
                <label class="custom-control-label" for="{{ vendor.id }}customSwitch1">Enable</label>
          </div>
      </form>
{% endif %}

这是我的JS代码


 function switchAcc(cb_id) {

            let switchBtn = $('#' + cb_id).is(':checked');

            console.log(switchBtn)
            console.log(cb_id)

            $.ajax({
                url: $('#form').attr('action'),
                data: {
                    'status': switchBtn
                },
                dataType: 'json',
                success: function (data) {
                    console.log(data)
                    if (data.is_done) {
                        alert("A user with this username already exists.");
                    }
                },
                error: function (e) {
                    console.log(e.message);
                }
            });

        }

Django views.py ----

@login_required(login_url='/login/')
def change_account_switch(request, doc_id):
    ref = db.collection('vendorUsers').document(doc_id)
    switch = request.GET.get('status', None)
    if switch == 'true':
        switch = True
    elif switch == 'false':
        switch = False
    ref.update({
        'accountEnabled': switch,
    })

    data = {
        'is_done': ref.get().to_dict()['accountEnabled'],
    }
    return JsonResponse(data)

我有一个更多的问题,看看我的表单元素代码,我在那里显示多个用户,每个用户在他们的个人资料数据库中包含accountEnabled字段。. . .

现在,看看我的views.py代码。在该文件中,我根据切换按钮(复选框)更新accountEnabled字段。. .

但问题是,列表中只有第一个用户的账户已启用字段在更新。–

答案

你需要在函数中使用 '' 这就是你目前收到的错误的原因。, 靠近 }.error.. 那你就用错误的方式来称呼你的形式行动,它应该是这样的 $('form').attr('action') 而这 {#url: '/ajax/change_account_switch/{{ doc_id }}',#} 也出现了错误。

工作的jquery代码。

function switchAcc(doc_id) {
  console.log("vendor_id ="+doc_id); //your id
  let switchBtn = $('input[name="switch"]').checked;
  console.log("form_action = "+$('form').attr('action'));
  $.ajax({
  // {#url: '/ajax/change_account_switch/{{ doc_id }}',#}
    url: $('form').attr('action'), //form action
    data: {
      'status': switchBtn
    },
    dataType: 'json',
    success: function(data) {
      console.log(data)
      if (data.is_done) {
        alert("A user with this username already exists.");
      }
    }, //, was missing
    error: function(e) {
      //console.log(e.message);
    }
  });

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="{% url 'change_account_switch' vendor.id %}" method="post">
  {% csrf_token %}
  <div class="custom-control custom-switch">
    <!--use here '{{ vendor.id }}'-->
    <input onclick="switchAcc('{{ vendor.id }}');" type="checkbox" name="switch" class="custom-control-input" id="customSwitch1" checked>
    <label class="custom-control-label" for="customSwitch1">Enable</label>
  </div>
</form>

以上是关于未捕获的语法错误。在<input id={{供应商.id }}中出现无效或意外的标记。的主要内容,如果未能解决你的问题,请参考以下文章

作为 ID 的 JQuery 变量导致未捕获错误:语法错误,无法识别的表达式:'#cell32'

未捕获的错误:语法错误,无法识别的表达式:不支持的伪:[重复]

未捕获的错误:语法错误,无法识别的表达式:select:[id * =“devices_0_command”] [关闭]

jQuery:未捕获的错误:语法错误,无法识别的表达式

D3.js:“未捕获的语法错误:意外的令牌非法”?

节点/角度应用程序未捕获的语法错误:意外的令牌 <