Dajax函数无法调用另一个函数

时间:2013-12-23 19:44:50

标签: javascript ajax django dajaxice dajax

我有一个Song模型,其votes属性。我在每个Vote as Favourite对象下面显示了一个Song按钮。我希望当用户点击Vote as Favourite按钮时,与votes对象关联的Song属性应增加1,并且应禁用所有Vote as Favourite按钮。

HTML

{% for song in dj_song_list %}
    <div>
        <p><h3>{{ song.name }}</h3></p>
        <p class="song_id">{{ song.song_id }}</p>
        <button type="button" class="btn btn-default btn-custom" class='vote' onclick="update();">Vote as Favourite</button>
    </div>
{% endfor %}

ajax.py

def update_votes(id):
    song = Song.objects.get(song_id=id)
    song.votes += 1
    song.save()

@dajaxice_register
def update_disable(request, song_id):
    update_votes(song_id)
    dajax = Dajax()
    dajax.assign('.vote', 'disabled', 'disabled')
    return dajax.json()

的JavaScript

function update(){
     Dajaxice.hunt.update_disable(Dajax.process,{'song_id':$('.song_id').val()})
}

单独使用时,按钮禁用部件可正常工作。但是当我在update_votes()函数中使用update_disable()函数时,没有任何作用。我的代码出了什么问题?

2 个答案:

答案 0 :(得分:1)

AJAX部分什么都不做,因为它会出错。问题出在update_votes()函数中。问题可能是:

  • 存在多个具有相同song_id
  • 的对象
  • id的歌曲不存在

尝试使用pdb.set_trace()进行调试:

def update_votes(id):
    import pdb; pdb.set_trace()
    song = Song.objects.get(song_id=id)

答案 1 :(得分:0)

我已将votes模型的Song属性设置为default=None。因此,它无法执行添加操作。我现在将其设置为default=0