Jquery 使用Jinja2和Webapp2呈现模板

Jquery 使用Jinja2和Webapp2呈现模板,jquery,jinja2,webapp2,Jquery,Jinja2,Webapp2,我对编程非常陌生,如果我在解释自己方面做得不好,我会提前道歉 我正在使用Python、Webapp2、Jinja2和jquery创建一个GAE应用程序。我可以通过HTML表单传递字符串查询,将查询添加到Python字典,并使用Jinja2和Webapp2呈现并写出它们来更新HTML页面 但是,当我尝试使用jquery Ajax post方法而不是使用HTML表单发出post请求时,我的HTML页面没有更新。我肯定是在从Python程序中调用render函数,但它什么都不做 如果有人能给我任何帮助

我对编程非常陌生,如果我在解释自己方面做得不好,我会提前道歉

我正在使用Python、Webapp2、Jinja2和jquery创建一个GAE应用程序。我可以通过HTML表单传递字符串查询,将查询添加到Python字典,并使用Jinja2和Webapp2呈现并写出它们来更新HTML页面

但是,当我尝试使用jquery Ajax post方法而不是使用HTML表单发出post请求时,我的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

再次感谢您的帮助。我希望这不会太令人困惑。几周前,我白手起家,所以我仍在努力克服这一切。

如何,我不确定。然而,它现在运行良好。我认为jquery代码实际上并没有将其归结为$.ajax函数,尽管我不确定它是如何应用到我的Python脚本中的。我想这就是让我失望的原因。直到今天我才使用过jquery,所以我想我只是想以比我能更快的速度学习这些东西。

我建议你下载Fiddler,看看到底生成了什么请求和响应。这将为您节省大量调试麻烦!:-另外,使用浏览器的开发工具控制台查找任何错误,例如Chrome中的ctrl+shift+j。谢谢你的建议,Cameron。我马上就去试试。