template Django com jquery: atualização Ajax na página existente

votos
3

Eu tenho um Google App Engine que tem uma forma. Quando o usuário clica no botão enviar, a operação AJAX será chamado, eo servidor irá imprimir algo para anexar ao final da mesma página onde ele vem. Como, eu tenho um modelo Django, e eu pretendo usar jQuery. Eu tenho o seguinte ponto de vista:

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

Aqui está o script em 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> );
        }
      } );

    };

E aqui está o meu código de controlador:

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

Como você pode ver, quando o usuário clica no submitButton, o método de controlador Mainpage.post será chamado.

Agora eu quero mostrar o conteúdo do 'resultado' direito variável após o formulário, como posso fazer isso?

Publicado 16/10/2008 em 16:27
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

Sem ser capaz de testar o código, quais são os seus resultados? Você verificou os resultados retornados pela chamada AJAX? Sugiro que você executar o Firefox com Firebug e registrar os resultados Ajax para o console Firebug para ver o que você tem:

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

Você também pode usar o painel Net do Firebug para ver o que está sendo passado para trás e para frente.

Além disso, o que significa "simplejson.dumps (resultado)" resultam em?

Respondeu 05/11/2008 em 22:53
fonte usuário

votos
1

aqui está um exemplo da minha função de sucesso

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

por favor note que você tem que depurar usando o Firebug ou algo semelhante, porque pode haver alguns serialização questão que vai jogar e erro, mas não será vieweable a menos que você usar algo como o Firebug ou implementar erro .ajax

Respondeu 07/05/2009 em 03:26
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more