3

フォームを持つ 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' 変数の内容を表示したいのですが、どうすればよいですか?

4

2 に答える 2

2

コードをテストできなくても、結果はどうなりますか?AJAX呼び出しによって返された結果を確認しましたか?FirefoxをFirebugで実行し、AJAXの結果をFirebugコンソールに記録して、何が得られるかを確認することをお勧めします。

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

Firebugのネットパネルを使用して、何が行き来しているかを確認することもできます。

また、「simplejson.dumps(result)」の結果はどうなりますか?

于 2008-11-05T21:53:18.323 に答える
1

ここに私の成功関数の例があります

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

firebug などを使用してデバッグする必要があることに注意してください。シリアル化に問題が発生してエラーが発生する可能性がありますが、firebug などを使用するか .ajax エラーを実装しない限り表示できません。

于 2009-05-07T02:26:37.493 に答える