第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將復(fù)選框輸入保存到數(shù)據(jù)庫并更新頁面

將復(fù)選框輸入保存到數(shù)據(jù)庫并更新頁面

楊魅力 2023-03-08 16:20:35
我的問題是我有一個(gè)“分配”對(duì)象列表,它們都有一個(gè)名為“狀態(tài)”的字段。狀態(tài)為 true 或 false,用戶可以通過單擊特定分配的復(fù)選框來選擇更改值。這就是前端的樣子,每個(gè)作業(yè)都有一個(gè)復(fù)選框,這是它的“狀態(tài)”我目前的解決方案是這樣的:課程詳情.html:{% for assignment in assignments %}<tr>  <td scope="row" style="text-align: center">    <form>    {% csrf_token %}      {% if assignment.status %}        <input type="checkbox" checked onclick='assignmentFinish("False","{{assignment.id}}")'>      {% else %}        <input type="checkbox" onclick='assignmentFinish("True","{{assignment.id}}")'>      {% endif %}    </form>  </td>  <td><h5><span class="badge badge-{{assignment.module.colour}}">{{assignment.module}}</span></td>  <td><a href="{{ assignment.assigmentFile.url }}">{{assignment.title}}</a></td>    <td>{{assignment.deadline}}</td>  ...</tr>{% endfor %}阿賈克斯代碼:function assignmentFinish(value,assignment) {    link = "{% url 'uni:finish-assignment' %}";    $.ajax({      type:'POST',      url: link,      data:{        status: value,        assignmentID: assignment,        csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()      },      success: function(){      }    });}  意見.py:def finishAssignment(request):    # Get the product that user has wished for    assignmentID = request.POST['assignmentID']    status = request.POST['status']    assignment = Assignment.objects.get(pk=assignmentID)    print(status)    if status == 'True':        print("saving to true")        assignment.status = True    else:        print("saving to false")        assignment.status = False    assignment.save()    return HttpResponse('')enter code here它表明正在調(diào)用 ajax 請(qǐng)求,但打印語句應(yīng)該在 true 和 false 之間交替。出現(xiàn)這種情況的原因可能是因?yàn)樵诘谝淮螌⑿轮当4娴綌?shù)據(jù)庫后,顯示復(fù)選框的頁面上的信息沒有更新。我該如何解決?
查看完整描述

1 回答

?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

問題與您如何構(gòu)建它有關(guān)。我會(huì)給你關(guān)于正在發(fā)生的事情和解決方案的建設(shè)性反饋。


你提到


1.


例如,如果用戶重復(fù)單擊一個(gè)最初未選中的復(fù)選框,打印語句將是這樣的:


[15/Jul/2020 16:11:51] "POST /uni/finishAssignment HTTP/1.1" 200 0

True

saving to true

[15/Jul/2020 16:11:52] "POST /uni/finishAssignment HTTP/1.1" 200 0

True

saving to true

這是True因?yàn)檫@<input type="checkbox" onclick='assignmentFinish("True","{{assignment.id}}")'>將調(diào)用ajax值為 的請(qǐng)求True。在views.py它將執(zhí)行以下塊


if status == 'True':

   print("saving to true")

   assignment.status = True

所以上面顯示的打印行為是完全正常的,因?yàn)檫@個(gè)塊將被重復(fù)執(zhí)行。


2.


但是打印語句應(yīng)該在 true 和 false 之間交替。出現(xiàn)這種情況的原因可能是顯示復(fù)選框的頁面上的信息未更新。


這是正確的,因?yàn)槟鷽]有在任何地方更新復(fù)選框的值,并且您始終假定值是明確的true和false。


解決方案: 要解決此問題,您需要修改您的js函數(shù),使其將作為element第一個(gè)參數(shù)和assignment.id第二個(gè)參數(shù)。在其中,您需要通過使用checkedstatus屬性直接獲取復(fù)選框的值來更新參數(shù)。


  <td scope="row" style="text-align: center">

    <form>

    {% csrf_token %}

      {% if assignment.status %}

        <input type="checkbox" checked onclick='assignmentFinish(this,"{{assignment.id}}")'>

      {% else %}

        <input type="checkbox" onclick='assignmentFinish(this,"{{assignment.id}}")'>

      {% endif %}

    </form>

  </td>

function assignmentFinish(element,assignment) {

    link = "{% url 'uni:finish-assignment' %}";

    $.ajax({

      type:'POST',

      url: link,

      data:{

        status: element.checked ,

        assignmentID: assignment,

        csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()

      },

      success: function(){


      }

    });

}

現(xiàn)在您將傳遞復(fù)選框的實(shí)際值,它應(yīng)該按照您期望的方式運(yùn)行。


查看完整回答
反對(duì) 回復(fù) 2023-03-08
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)