2008-10-16 3 views
3

У меня есть Google App Engine, который имеет форму. Когда пользователь нажимает кнопку отправки, вызывается операция AJAX, и сервер выводит что-то, чтобы добавить к концу самой страницы, на которой он появился. Как, у меня есть шаблон Django, и я намерен использовать jquery. У меня есть следующий вид:Шаблон Django с jquery: обновление Ajax на существующей странице

<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)) 

Как вы можете видеть, когда пользователь щелкает на элементе submit будет вызываться метод Mainpage.post контроллера.

Теперь я хочу отобразить содержимое переменной «result» сразу после формы, как я могу это сделать?

ответ

2

Не имея возможности проверить код, каковы ваши результаты? Вы проверили результаты, полученные в результате вызова AJAX? Я хотел бы предложить вам запустить Firefox с Firebug и запись результатов AJAX на консоли Firebug, чтобы увидеть, что вы получите:

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

Вы также можете использовать Чистая панель Firebug, чтобы увидеть, что передается назад и вперед.

Кроме того, что означает «simplejson.dumps (result)»?

1

вот пример моей функции успеха

success: function(json){ 
       $('#gallons_cont').html(json['gallons']); 
       $('#area_cont').html(json['area']); 
       $('#usage_cont').html(json['usage']) 
       $('#results_json').show('slow');    
      }, 

Обратите внимание, что вы должны отладить с помощью Firebug или что-то подобное, как там может быть какой-то вопрос сериализация, который будет бросать и ошибки, но не будет vieweable, если вы используете что-то вроде firebug или реализуете ошибку .ajax

Смежные вопросы