2

申し訳ありませんが、これは以前に尋ねられたことがあるかもしれません。しかし、私は数日間グーグルで検索しましたが、まだ問題を解決できません。Google App Engine と Python を使用してチャット システムを開発しています。ユーザーにメッセージを入力して「送信」ボタンをクリックしてもらいたいのですが。このアクションにより、Ajax post 関数「addMsg()」がトリガーされ、メッセージが Chat クラス (URL: 「/chat」) に POST され、メッセージがデータストアに追加されます。メッセージリストを定期的に更新する別の Ajax 関数「updateMsg()」があります。

コードはメッセージの更新には問題なく機能しますが、メッセージを正しく投稿できません。誰でも私を助けることができますか?ありがとう。ここに私のコードがあります:

チャット.html:

    <p>
    <form method="" action="">
    <input type="text" name="message" size="60" /><br />
    <input type="button" value="Submit" onclick="addMsg('message')" />
    </form>
    </p>
    <div id="chatcontent"> </div>
    <script>
    function addMsg(message) {
        $.ajax({
            type: "POST",
            url: "/chat",
            data: {'message': message},
            cache: false
        });
    }
    </script>

    <script>
    $(document).ready(function() {
        function updateMsg() {
            $.ajax({
               url: "/message",
               cache: false,
               success: function(returndata){
                    $("#chatcontent").html(returndata);
               }
            });
            setTimeout(updateMsg, 4000);
        }
        updateMsg();
    });
    </script>

message.html:

    {% for chat in chatlist %}
    <p>
      {{ chat.text }} ({{ chat.user.account }}) {{chat.created|date:"D d M Y" }}
    </p>
    {% endfor %}

チャット.py:

    # Called by URL "/chat"
    class Chat(webapp2.RequestHandler):
        def post(self):
            message = self.request.get('message')
            newchat = ChatMessage(user=self.session['userkey'], text=message, created=datetime.datetime.now())
    newchat.put()

    # Called by URL "/message"
    class Message(webapp2.RequestHandler):
        def get(self):
            que = db.Query(ChatMessage).order('-created')
            chatlist = que.fetch(limit=100)
            render(self, 'message.html', {'chatlist': chatlist})
            # Note: render() is a function to be imported, which is just a normal template rendering function. It works fine and is omitted here.
4

1 に答える 1

2

Chat.html

<p>
<input type="text" name="message" size="60" /><br />
<input type="button" value="Submit" onclick="addMsg()" />
</p>
<div id="chatcontent"> </div>
<script>
function addMsg() {
    var message = $('input[name=message]').val();
    $.ajax({
        type: "POST",
        url: "/chat",
        data: {'message': message},
        cache: false
    });
}
</script>
于 2012-11-07T03:58:54.103 に答える