Django模板与jQuery:在现有页面上进行Ajax更新
我有一个Google App Engine,上面有一个表单。当用户点击提交按钮时,会调用AJAX操作,服务器会输出一些内容,添加到用户所在页面的末尾。我有一个Django模板,打算使用jquery。我的视图代码如下:
<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中的脚本:
$(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会被调用。
现在我想在表单后面显示'result'变量的内容,我该怎么做呢?
2 个回答
2
在没有办法测试代码的情况下,你得到了什么结果呢?你有没有检查过AJAX调用返回的结果?我建议你用Firefox浏览器和Firebug工具,记录一下AJAX的结果到Firebug控制台,这样你就能看到具体得到了什么:
//...
success: function( result ) {
console.log( result );
$('#SubmitForm').after( "<div><tt>" +
// ...
你也可以使用Firebug的网络面板,看看数据是如何来回传递的。
另外,“simplejson.dumps(result)”这个代码的结果是什么呢?