感觉就像我在这里遇到了一些相当简单的事情。
我不了解 AJAX 和 Flask。
我有一个项目,我在浏览器中显示 mongodb 记录,它一直运行良好。
我为用户添加了增加记录投票的功能;如果他们喜欢,请投票。但最初我用新的投票刷新了整个页面,使用重定向,这是笨拙的。所以我试图让 AJAX 将数据发送到 mongodb 记录,然后更新我希望投票出现的跨度,而无需重新加载整个页面。
问题是,我正在进行的设置,虽然仍在更新记录,但现在正在加载一个新页面,其中的 HTML 我只想返回到投票记录应该是的跨度(也就是说,它正在加载一个只有单词的新页面其中的“测试”(我当前返回的测试值))。
jQuery(我正在使用的库)加载正常,没有其他问题(据我所知)。
我在这里有相关的 HTML 和 JS:
<!-- All Standard HTML up here, removed for simplicity -->
<script>
$('#vote_link').bind('click', function(e){
e.preventDefault();
var url = $(this).attr('href');
$('#vote_tally').load(url);
});
</script>
<a href='/vote_up/{{ item._id }}' id='vote_link'>Vote for Me!</a><br>
Likes: <span id='vote_tally'>{{ item.votes }}</span>
<!-- All Standard HTML down here, removed for simplicity -->
蟒蛇在这里:
from flask import Flask, render_template, request, redirect, flash, jsonify
#from mongokit import Connection, Document
#from flask.ext.pymongo import PyMongo
from pymongo import Connection#, json_util
#from pymongo.objectid import ObjectId #this is deprecated
import bson.objectid
'''my pymongo connection - removed for simplicity'''
'''bunch of other routes - also removed for same reason'''
#increment a vote
@app.route('/vote_up/<this_record>')
def vote_up(this_record):
vandalisms.update({'_id':bson.objectid.ObjectId(this_record)},
{"$inc" : { "votes": 1 }}, upsert=True)
'''
also trying to return value for votes field from mongo record, but one step at a
time here
'''
#result = vandalisms.find({'_id':bson.objectid.ObjectId(this_record)}, {'votes':1})
result = 'test'
return result
我也无法弄清楚如何将指定 mongodb 记录的个人投票值返回给浏览器,即使使用 jsonify (返回 {"votes":'_id'},但这是另一个问题。希望有人可以帮助我在这方面了解如何使用 Flask 使 AJAX 为我工作。
提前致谢,
编辑-24Jul2012-2:27PM CST:
我怀疑 jQuery 甚至没有激活。它似乎是根据链接的 href 属性加载新页面,因此e.prevenDefault();
当它没有运行时没有用。此外,alert('I have been clicked');
当点击事件发生时,永远不会运行。再次,jQuery 被加载,但点击事件没有激活 jQuery,我不知道为什么没有。