AJAX 僅在 DJANGO 回圈中選擇第一個元素 id。
無論我在哪里單擊“編輯”按鈕,它都會帶來第一個帖子內容。我只是在其他功能中使用了類似的方法(例如一個贊按鈕),但是在這個功能中,我并沒有真正看到它只在每個模板中選擇回圈的頂部元素。請幫忙。
到目前為止,這是我想出的:
JS:
//Edit
$('.editfunction').click(function(){
event.preventDefault()
var post_pk;
var content = $('.textarea_edit').val();
post_pk = $(this).data("post_pk");
$.ajax({
type: "POST",
url: `/post/${post_pk}/edit`,
data: {
csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value,
post_id: post_pk,
textarea: content
},
success: function(data) {
$('.modal-edit').modal('hide')
var content = $('.textarea_edit').val()
$(`.post-object-content${post_pk}`).html(content)
}
})
})
FOR回圈:
{% for post in paginated_posts %}
<div style="padding: 10px;" id="{{post.id}}">
<div style="padding: 10px; border: 1px solid;">
<p>
<h4><a href="{% url 'post_view' post.pk %}">{{ post.title }}</a></h4>
</p>
<p style="display: inline-flex;">
{% if post.author.profile.id %}
by: <span style="font-weight: bold;"><a href="{% url 'profile_class' post.author.profile.id %}"> {{ post.author }} </a></span>
{% else %}
by: <span style="font-weight: bold;"> {{ post.author }} </span>
{% endif %}
on {{ post.creation_date }}
</p>
<h5 >{{ post.post_text }}</h5>
<!-- Edit -->
{% if user.is_authenticated %}
{% if user.id == post.author.id %}
<!-- Button modal edit-->
<small><a href="{% url 'post_view' post.pk %}">[Edit]</a></small>
<!-- Modal EDIT -->
<div id="edit" role="dialog">
<div role="document">
<div >
<div >
<h5 >Edit post {{ post.id }}</h5>
<button type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div >
<form method=post action="{% url 'edit' post.pk %}">
{% csrf_token %}
<textarea rows="10" name="textarea">{{post.post_text}}</textarea>
<br>
<div >
<button data-post_pk="{{ post.pk }}" type="submit" value="Save">Submit</button>
</div>
</form>
</div>
</div>
</div>
</div>
{% endfor %}
uj5u.com熱心網友回復:
你的問題出在這里:
var content = $('.textarea_edit').val();
不幸的是,這正在按預期作業。如果類選擇器有多個成員,.val() 將按該名稱獲取類串列的第一個元素(有關詳細資訊,請參閱https://api.jquery.com/val/)
如果您想對該類的每個 textarea 值執行某些操作,可以通過以下程序將它們放入陣列中:
var content = []
$('.textarea_edit').each(function(){
content.push($(this).val());
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492037.html
標籤:javascript django 阿贾克斯 循环
上一篇:如果定義了成功和錯誤,為什么資料不會系結-datatablesajax
下一篇:加載HTML時CSS未顯示
