我正在通過點擊一個選擇下拉選單來更新一個資料庫條目。在確認選擇后,我向另一個視圖發送了AJAX POST,該視圖在資料庫中應用了所需的更改,并回傳到前一個頁面。
問題是,除非我重繪 ,否則目標頁面并不反映新的值。
選擇HTML(project.html)
< select id="update_status_outreach" name="{{outreach。 id}}_____{{project.id}}">
{% for outreach_status in outreach_statuses %}.
{% if outreach_status.0 == outreach.outreach_status %}。
<option value="{{ outreach. outreach_status }}" selected>{{ outreach.outreach_status }}</option>
{%else%}
<option value="{ { outreach_status.0 }}">{{outreach_status.0}}</option>/span>
{%endif %}{%endfor %}
{%endfor%}
</select>
Javascript(project.html)
document. getElementById("update_status_outreach").onchange = changeListener;
function changeListener() {
var name = this.name.split("_____")。
var project_id = name[1] 。
var outreach_id=name[0]。
var new_status = this.value。
if(confirm("Placejpòdore"/span>)) {
$.ajax({
type: "POST"。
url: "{% url 'action:update_status_outreach' %}"。
data: {
csrfmiddlewaretoken: "{{ csrf_token }}"。
'project_id': project_id。
'outreach_id': outreach_id。
'new_status': new_status
},
});
}
}
outreach.py中的update_status_outreach視圖
@login_required(login_url='action:login')>
def update_status_outreach(request)。
project_id = request.POST['project_id']
outreach_id = request.POST['outreach_id']
new_status = request.POST['new_status']
jobproject = get_object_or_404(JobProject, id=project_id)
if jobproject.owner != request.user。
raise HttpResponse(status=500)
else:
outreach_to_be_updated = Outreach.objects.get(id=outreach_id)
outreach_to_be_updated.outreach_status=new_status
outreach_to_be_updated.save()
return HttpResponseRedirect(reverse('action:project', args=(project_id,))
project.py中的project視圖
。
@login_required(login_url='action:login')>
def project(request, project_id)。
if request.method == 'POST':
outreach_id = request.POST.get('outreach_id')
new_rank = request.POST.get('new_ranking')
update_rank(outreach_id=outreach_id, new_rank=new_rank)
project_referred = get_object_or_404(JobProject, id=project_id)
jobpositions_referred = JobPosition.objects.filter(jobproject=project_referred)
outreaches_referred = Outreach.objects.filter(position__jobproject=project_referred)
顏色 = ['#9bf5ff'/span>, '#a89dff'/span>, '#fff79d'/span>, '#9b5252'/span>, '#72b267'/span>, '#d75e5e'/span>]
context = {'project'/span>: project_referred, 'jobpositions'/span>: jobpositions_referred, 'outreaches'/span>: outreaches_referred,
'outreach_statuses': OUTREACH_STATUS, 'color': colors, 'position_statuses': position_status}。
return render(request, 'action/project.html'/span>, context)
預先感謝你!
uj5u.com熱心網友回復:
首先,你必須將Django函式中的新值回傳到HTML檔案中。然后你需要給你的ajax添加一個成功函式,其中的select,option元素也將被更新。 問題是,你在加載網站時創建了一個選擇元素,但沒有腳本改變HTML內容。
$.ajax({
method: "post"。
dataType: "json",
data: ...。
url: "/..."。
success:function(response){
document.GetElementById("id_of_option") 。 innerHTML = response.your_response。
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/320469.html
標籤:
