我正在使用Python,Webapp2,Jinja2和jquery创建一个GAE应用程序。我可以通过HTML表单传递字符串查询,将查询添加到Python字典,并使用Jinja2和Webapp2来渲染它们并将它们写出来来更新HTML页面。
但是,当我尝试使用jquery Ajax post方法发出POST请求而不是使用HTML表单时,我的HTML页面没有更新。我肯定从我的Python程序调用render函数,但它没有做任何事情。
任何人都可以提供给我的任何帮助或建议将不胜感激。提前谢谢。
这是我的python代码,它继承了一个处理所有Webapp2请求的基类。这通常很有效。
class EditJobPage(AppHandler):
global objectDict
objectDict ={}
def get(self):
jobs = Job.querynewjobs()
TemplateDict = {}
TemplateDict = {
'jobs': jobs,
}
self.render('editjob.html', **TemplateDict)
def post(self):
MyKey = self.request.get('job_key')
TemplateDict = {}
try:
job = GetFromSafeKey(MyKey)
objectDict['job'] = job
TemplateDict = {
'job': job,
}
if self.request.get('what') == 'rename':
TemplateDict['jobdescription'] = self.request.get('rename_description')
self.rename(**TemplateDict)
elif self.request.get('what') == 'delete':
self.delete(**TemplateDict)
elif self.request.get('what') == 'renumber':
TemplateDict['jobnumber'] = int(self.request.get('renumber_description'))
self.renumber(**TemplateDict)
except:
TemplateDict['error'] = 'No job selected'
self.render('editjob.html', **TemplateDict)
logging.info('here')
这是基类。同样,当我使用HTML表单按钮调用时,这一切都很有效。
$("#deletejobbutton").click(function(event) {
var JobKey = $('#mykey').val();
var querystring = 'what=delete'
$.ajax({
url: '/templates/editjob',
data: {
"what": 'delete',
"job_key": JobKey,
},
dataType: 'json',
type: "POST",
success: function(response) {
},
error: function(xhr) {
}
});
});
当我运行它时,HTML页面没有任何反应。然而,GAE日志显示'here',所以我知道它是Python代码。但是,如果我使用带有字符串查询的HTML表单尝试相同的操作,页面会更新。这是GAE日志:
INFO 2014-10-27 11:39:53,404 module.py:659] default: "POST /templates/editjob HTTP/1.1" 200 2228
INFO 2014-10-27 19:40:03,249 MyClasses.py:120] here
INFO 2014-10-27 11:40:03,250 module.py:659] default: "POST /templates/editjob HTTP/1.1" 200 2228
再次感谢您的帮助。我希望这不会太混乱。几个星期前我从零开始,所以我仍然试图绕过这一切。
答案 0 :(得分:0)
怎么样,我不确定。然而,它现在工作正常。我认为jquery代码实际上并没有真正归结为$ .ajax函数,尽管我不确定它是如何制作我的Python脚本的。我想这就是让我失望的原因。我从来没有使用过jquery直到今天,所以我想我只是想比我能更快地学习这些东西。