2012-10-25 27 views
2

我是新的django和jquery,我尝试实现一个非常简单的$ post请求。在Django的jquery帖子

这里是我做过什么:

我的JS:

$.post(/mysite/blabla/, { 
score : 40 
}); 

我的看法:

def blabla(request): 
    score_user = 20 
    if request.method == 'POST': 
     score_user = request.POST['score'] 

控制台不指示POST请求的任何错误。事情是,当我渲染“score_user”,我总是得到20,当我期望得到40.

任何帮助将受到欢迎。由于

编辑:

我的模型:

class UserProfile(FacebookProfileModel): 
     user = models.OneToOneField(User) 
     comment = models.BooleanField() 
     score = models.IntegerField(null=True, default=0) 
+0

它发生由于在视图功能,该值的分数以某种方式未在POST未来的一部分。尝试打印:打印request.POST ['分数'],看看你得到什么。另一方面,我不知道jquery,但字典式对象具有以下方案:{key:value,}其中键几乎总是一个字符串try:{'score':40} – PepperoniPizza

+0

这只是JavaScript; '{分数:40}'和'{'分数':40}'完全相同。 –

回答

0
$.post('/mysite/blabla/', {'score': 40}, function(data) { 
    $('.result').html(data); 
}); 
+0

谢谢,这个答案非常清楚,它对我有很大的帮助。但是当我进入我的页面/ mysite/blabla时,它仍然呈现20,而不是40。这是正常的吗? –

+0

我使用SQLite。但在这种情况下,20来自我的观点。在尝试直接通过jquery请求修改数据库之前,我想做一些简单的事情。但那最后我想做什么。 P.S:我编辑了我的问题,向你展示了我的模型。 –

+0

非常感谢,这正是我想要做的!谢谢你的时间,你帮了我很多! –

0

试试这个:

$.post("/mysite/blabla/", { score : 40 }, function(data){ 
    // alert(data); 
    $("#results").html(data); 
}); 

HTML:

Score: <span id='results'></span> 
+0

嗨。谢谢您的回答。当我这样做,我回到页面的HTML与(不blabla)我有一个弹出窗口说:“页面本地主机:8000说:40”。但是当我继续使用mysite/blabla时,我的页面仍然会显示20。 –

+0

好吧,它看起来像在弹出窗口中呈现我的/ blabla /的html。但是我想要做的是使用post请求来修改我的Django应用程序的一个对象。例如,我的用户的对象分数。你有什么想法如何做到这一点?非常感谢你! –

+0

是啊,你想修改的区域取决于分数,用span或者div来代替id,如下所示:score = ,然后像这样填充它:$(“ #results“)的html(数据)。我已经完善了我的答案来帮助你 – Relentless

0

你需要URL编码要传递的参数到你看来唱歌&。除了POST请求之外,除非已禁用它,否则需要csrfmiddlewaretokenstatus将根据要求提醒。

$.post('/mysite/blabla/','score=40&csrfmiddlewaretoken='+'{{csrfmiddlewaretoken}}'). 
success(function(data, status, xhr) { alert(status)}). 
error(function(data, status, xhr) { alert(status)}) 

.success.errorsyntax是jquery的promise接口

+0

好的,谢谢,它工作得很好。但是现在,我如何使用这个值(分数= 40)来修改我的一个对象?例如,我是否想用ajax请求发布的分数替换用户的分数? –

+0

@VictoriaBaboule可以通过执行'request.user'来访问视图中的用户。然后继续过滤你需要的模型,将'Player'称为'p = Player.object.get(user = user)',然后执行'p.score + = score',然后执行'p.save()'。确切的要求会根据您的需要而有所不同,但希望您明白了。 –