我已经建立了一个保存按钮。用户单击“保存”按钮将记录保存到其集合中。这会将“保存”按钮文本更改为“已保存”。然后用户可以单击“保存”取消保存记录。你知道吗
用户可以成功地保存记录,ajax通过将id="likes"
更改为id="unsave"
来按预期更新html。你知道吗
问题是ajax没有获取 id="unsave" so is not routing to the ^{save_release
URL。你知道吗
Url示例
http://127.0.0.1:8000/save_release/?release_id=585197&num_saves=14http://127.0.0.1:8000/unsave_release/?release_id=585197&num_saves=14
在用户进行初始保存之后,是否需要以某种方式重置ajax?你知道吗
型号.py
@login_required
def save_release(request):
release_id = None
num_saves = None
username = request.user.username
if request.method == 'GET':
release_id = request.GET['release_id']
num_saves = request.GET['num_saves']
if release_id:
insert = ChartsExtended(release_id=release_id,artist=username,url='Like',date='date',type='U',source='net')
insert.save()
num_saves = str(int(num_saves) + 1)
return HttpResponse(num_saves)
@login_required
def unsave_release(request):
release_id = None
num_saves = None
username = request.user.username
if request.method == 'GET':
release_id = request.GET['release_id']
num_saves = request.GET['num_saves']
if release_id:
insert = ChartsExtended.objects.get(release_id=release_id,artist=username)
insert.delete()
num_saves = str(int(num_saves) - 1)
return HttpResponse(num_saves)
阿贾克斯.js
$(document).ready(function() {
// JQuery code to be added in here.
$('#likes').click(function(){
var release_id;
var num_saves;
release_id = $(this).attr("data-releaseid");
num_saves = $(this).attr("data-numsaves")
$.get('/save_release/', {release_id: release_id,num_saves: num_saves},
function(data){
$('#like_count').html(data + " people saved this");
// $('#likes').css({"background-color":"#FF0000"});
$('#likes').toggleClass("btn-info");
$('#likes').text('Saved!')
$('#likes').attr('id','unsave');
});
});
//this unsaves a release from Release
$('#unsave').click(function(){
var release_id;
var num_saves;
release_id = $(this).attr("data-releaseid");
num_saves = $(this).attr("data-numsaves")
$.get('/unsave_release/', {release_id: release_id,num_saves: num_saves},
function(data){
$('#like_count').html(data + " people saved this");
// $('#likes').css({"background-color":"#FF0000"});
$('#unsave').toggleClass("btn-success");
$('#unsave').text('Save')
$('#unsave').attr('id','likes');
});
});
发布.html
<h3 id="like_count">{{dict_item.cnt}} people saved this</h3>
<p><button id="likes" data-releaseid="{{ dict_item.id }}" data-numsaves="{{dict_item.cnt}}" class="btn btn-xlarge btn-success release-follow-buttons" type="button">Save</button></p>
在用户单击“保存”后将转换为以下内容
<p><button id="unsave" data-releaseid="release_id" data-numsaves="num_saves" class="btn btn-xlarge btn-success release-follow-buttons btn-info" type="button">Saved!</button></p>
网址.py
url(r'^save_release/$', views.save_release, name='save_release'),
url(r'^unsave_release/$', views.unsave_release, name='unsave_release'),
这是因为当您在id为
unsave
的元素上附加onclick
处理程序时,该元素当时不存在,处理程序也没有附加。你知道吗您要么需要在更改
id
时附加处理程序,要么更好的解决方案是使用delegated event handlers。你知道吗您也不需要在
ready
回调中附加这些委托事件,因为这样做时#likes
和#unsave
元素不必存在。你知道吗相关问题 更多 >
编程相关推荐