并改变投票()看起来像这样: p>
def span>投票 span>( span>要求 span>): span>结果 span>= span>{ span>'成功' span>: span>错误的 span>} span>如果 span>要求 span>。 span>方法 span>==. span>U'GES' span>: span>数据 span>= span>要求 span>。 span>得到 span>el span>要求 span>。 span>方法 span>==. span>U'Post' span>: span>数据 span>= span>要求 span>。 span>邮政 span>如果 span>数据 span>。 span>has_key. span>( span>U'PK' span>) span>和 span>数据 span>。 span>has_key. span>( span>u'vote' span>): span>PK. span>= span>㈡ span>( span>数据 span>[ span>U'PK' span>]) span>投票 span>= span>数据 span>[ span>u'vote' span>] span>轮询 span>= span>轮询 span>。 span>对象 span>。 span>得到 span>( span>PK. span>= span>PK. span>) span>如果 span>投票 span>==. span>你“up” span>: span>轮询 span>。 span>向上 span>() span>el span>投票 span>==. span>你“下来” span>: span>轮询 span>。 span>下 span>() span>结果 span>= span>{ span>'成功' span>: span>真的 span>} span>杰森 span>= span>简单json. span>。 span>倾倒 span>( span>结果 span>) span>返回 span>httpresponse. span>( span>杰森 span>那 span>mimetype. span>= span>'application / json' span>) span>
此代码有点尴尬,您可能更愿意将其重写为: p>
def span>投票 span>( span>要求 span>): span>结果 span>= span>{ span>'成功' span>: span>错误的 span>} span>如果 span>要求 span>。 span>要求 span>。 span>has_key. span>( span>U'PK' span>) span>和 span>要求 span>。 span>要求 span>。 span>has_key. span>( span>u'vote' span>): span>PK. span>= span>㈡ span>( span>要求 span>。 span>要求 span>[ span>U'PK' span>]) span>投票 span>= span>要求 span>。 span>要求 span>[ span>u'vote' span>] span>轮询 span>= span>轮询 span>。 span>对象 span>。 span>得到 span>( span>PK. span>= span>PK. span>) span>如果 span>投票 span>==. span>你“up” span>: span>轮询 span>。 span>向上 span>() span>el span>投票 span>==. span>你“下来” span>: span>轮询 span>。 span>下 span>() span>结果 span>= span>{ span>'成功' span>: span>真的 span>} span>杰森 span>= span>简单json. span>。 span>倾倒 span>( span>结果 span>) span>返回 span>httpresponse. span>( span>杰森 span>那 span>mimetype. span>= span>'application / json' span>) span>
这要求属性要求首先看起来邮政属性,然后看起来得到属性。因此,这正是我们想要的情况。但是,使用要求有点令人沮丧(它不太明确)。在某些地方,两者之间的选择成为一个哲学问题,即每个人都必须为自己回答。 p>
无论哪种方式,让我们保存观点并继续。 p>
首先,你可能想瞥一眼 除了对话对象,我们也将使用另一个FBJS对象,ajax.目的。这 与我们希望的一样简单。现在让FBS投入行动。 p> 我们将要编辑轮询/模板/ fb / detail.fbml模板。所以让我们快速打开: p> 开始,这就是它看起来(在我们添加任何Ajax功能之前): p> span>分数“ span>你 现在,首先让JavaScript函数取决于或向下取决于传递给IT的参数: p> 好的,现在我们只需要修改我们的模板来利用投票()我们刚写的功能。在我们的细节.FBML模板我们将重写HTML DIV与ID轮询。我们修改后它看起来像: p> span>分数“ span>你 请注意,我们仍然可以使用我们的方便“使用Django模板自定义JavaScript”技巧。 p> 好的。我们有什么作品,但我们有一个小问题:检查它是否有效的痛苦(您必须重新加载您手动上的页面)。所以,随着略微改进,让我们使用对话如果投票成功,则对象通知我们。 p> 让我们修改投票()函数一点。现在它看起来像: p> 我们正在为此分配匿名功能ondone.现场ajax.。分配给该字段的任何方法都是一个参数调用:ajax请求返回的内容。该内容以您创建的格式指定的格式ajax.对象(原始,JSON或FBML)。 p> 并且,随着这些变化,我们的AJAX功能FB.应用程序也完成了。 p> 在这七个教程段之后,您已经了解了很多碎片:Django测试框架,Pyfacebook,FBJ和其他。这是一个好时机返回并开始修改我们一直在玩的碎片,并通过将其带到更新(更有趣)的地方来看看您是否可以将自己的意志强加到代码上。如果出现任何问题,您可以随时下载[刚刚完成的代码快照] [POLLING7]。 p> 此时这个系列完成了,但是这里拿起的第二系列并继续在作品中。该系列将有点不同,因为它将介绍改善我们构建的质量,而不是简单地添加粗略的功能。 p>var. span>
var. span>
编辑细节.FBML模板
Emacs轮询/模板/ fb / detail.fbml
{% span>
功能 span>
功能 span>
下一步是什么?