带有jQuery的Django模板:现有页面上的Ajax更新 [英] Django template with jquery: Ajax update on existing page

查看:58
本文介绍了带有jQuery的Django模板:现有页面上的Ajax更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有表单的Google App Engine.当用户单击提交"按钮时,将调用AJAX操作,并且服务器将输出一些内容以附加到其所在页面的末尾.我有一个Django模板,打算使用jquery.我有以下观点:

I have a Google App Engine that has a form. When the user clicks on the submit button, AJAX operation will be called, and the server will output something to append to the end of the very page where it comes from. How, I have a Django template, and I intend to use jquery. I have the following view:

<html>
<head>
<title></title>
<script type="text/javascript" src="scripts/jquery.js"></script>
<script type="text/javascript" src="scripts/scripts.js"></script>

</head>
<body>
welcome
<form id="SubmitForm" action="/" method="POST"> 
<input type="file" name="vsprojFiles" />
<br/>
<input type="submit" id="SubmitButton"/>
</form>

<div id="Testing">
{{thebest}}
</div>

</body>
</html>

这是scripts.js中的脚本:

Here's the script in scripts.js:

$(function() {
    $("#SubmitForm").click(submitMe);
});

var submitMe = function(){
    //alert('no way');
    var f = $('#SubmitForm');
    var action = f.attr("action");
    var serializedForm = f.serialize();
  $.ajax( {
        type: 'post',
        data: serializedForm,
        url:  form_action,
        success: function( result ) {
          $('#SubmitForm').after( "<div><tt>" +
                                     result +
                                     "</tt></div>" );
        }
      } );

    };

这是我的控制器代码:

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext import db
from google.appengine.ext.webapp import template
from google.appengine.api.urlfetch_errors import *
import cgi
import wsgiref.handlers
import os
import sys
import re
import urllib
from django.utils import simplejson

class MainPage(webapp.RequestHandler):
    def get(self):
        path = os.path.join(os.path.dirname(__file__), 'Index.html')
        template_values={'thebest': 'thebest'}
        tmplRender =template.render(path, template_values)
        self.response.out.write(tmplRender)
        pass

    def Post(self):
        print >>sys.__stderr__,'me posting'
        result = 'grsgres'
        self.response.out.write(simplejson.dumps(result))

如您所见,当用户单击提交"按钮时,将调用控制器方法Mainpage.post.

As you can see, when the user clicks on the submitbutton, the controller method Mainpage.post will be called.

现在我想在表格后立即显示结果"变量的内容,该怎么办?

Now I want to display the content of the 'result' variable right after the form, how can I do it?

推荐答案

如果无法测试代码,结果是什么?您是否检查了AJAX调用返回的结果?我建议您使用Firebug运行Firefox,并将AJAX结果记录到Firebug控制台以查看得到的结果:

Without being able to test the code, what are your results? Have you checked the results returned by the AJAX call? I would suggest you run Firefox with Firebug and log the AJAX results to the Firebug console to see what you get:

//...
        success: function( result ) { 
        console.log( result );
      $('#SubmitForm').after( "<div><tt>" + 
// ...

您还可以使用Firebug的网络"面板查看来回传递的内容.

You can also use the Net panel of Firebug to see what is being passed back and forth.

此外,"simplejson.dumps(result)"会导致什么?

Also, what does "simplejson.dumps(result)" result in?

这篇关于带有jQuery的Django模板:现有页面上的Ajax更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆