【问题标题】:Getting object value for AJAX call using Dajaxice使用 Dajaxice 获取 AJAX 调用的对象值
【发布时间】:2014-01-10 23:41:57
【问题描述】:

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

HTML

{% for song in dj_song_list %}
    <div>
        <p class="song"><h3><strong>{{ song.name }}</strong></h3></p>
        <p><strong>Artist: </strong>{{ song.artists}}</p>
        <button type="button" class="btn btn-default btn-custom" id='vote' onclick="Dajaxice.hunt.disable_button(Dajax.process)">Vote as Favourite</button>
    </div>
{% endfor %}

我正在使用 dajaxice/dajax 进行 AJAX 调用。这就是我想出的 ajax.py

ajax.py

from django.utils import simplejson
from dajaxice.decorators import dajaxice_register
from dajax.core import Dajax

@dajaxice_register
def disable_button(request):
    dajax = Dajax()
    dajax.assign('#vote', 'disabled', 'disabled')
    return dajax.json()

@dajaxice_register(method="POST")   
def update_votes(request, song):
    song.votes += 1
    song.save()
    return simplejson.dumps({'message':'Thank you for voting'})

JS

function callback(data){
    alert(data.message);
}

如何获取Song 对象的值以发送到update_votes()

disable_button() 仅禁用第一个投票按钮。如何禁用所有投票按钮?

如何使用相同的按钮 onclick 属性同时调用 update_votes()disable_button()

【问题讨论】:

    标签: javascript python ajax django dajaxice


    【解决方案1】:

    以下是更新投票的方法。你不需要 update_votes 成为一个 ajax 函数。

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

    然后您可以从 disable_button 中调用此函数。

    @dajaxice_register
    def disable_button(request, song_id):
        update_votes(song_id)
        #disable the buttons
        return #whatever
    

    你确定你使用了正确的选择器来禁用你的按钮吗?

    【讨论】:

      猜你喜欢
      • 2012-01-16
      • 1970-01-01
      • 2014-04-08
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多