带有jQuery的Django模板:现有页面上的Ajax更新 [英] Django template with jquery: Ajax update on existing page
问题描述
我有一个带有表单的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屋!