2012-10-13 15 views
1

会话在Python代码中设置。我用烧瓶作为框架。会话用户名值保持不变,直到用户重新加载页面。如果有一种方法可以通过javascript响应会话值的更改或重新加载必要的部分而不重新加载整个页面?谢谢。Javascript不会更新会话,只有页面重新加载才能完成作业

的index.html:

<div id="cform"> 
    <form action="" method="get"> 
     <div class="cl">{{ session['username'] }}$ > 
      <input type="text" class="cli" name="cmd" 
      autocomplete='off' value="" autofocus /> 
     </div> 
    </form> 
</div> 
<script type=text/javascript> 
    $(function() { 
     $('form').last().submit(function() { 
      $.getJSON($SCRIPT_ROOT + '/_cmd', { 
       cmd: $('input[name="cmd"]').last().val() 
      }, function (data) { 
       var $query = $('input[name="cmd"]').last().val(); 
       $("<span>{{ session['username'] }}$ > " + $query + "</span><br />").appendTo("#output"); 
       $(data).each(function (i, val) { 
        $.each(val, function (k, v) { 
         $("<span>" + v + "</span><br />").appendTo("#output"); 
        }); 
       }); 
       $("#output").append($("form")); 
       $("form input").val("").focus(); 
      }); 
      return false; 
     }); 
    }); 
</script> 
<div id="output"></div> 

index.py:

@app.route('/') 
def index(): 
    if 'username' in session: 
    username = escape(session['username']) 
    else: 
    session['username'] = 'guest' 

    return render_template('index.html') 

@app.route('/_cmd') 
def cmd(): 
    cmd = request.args.get('cmd') 
    interpreter = Interpreter(cmd) 
    output = interpreter.mediator() 
    return jsonify(output) 
+0

http://jsbeautifier.org/ ... –

+0

THX罗宾,编辑 – user1743703

回答

0

我不知道烧瓶中,但在我看来,你犯了一个错误有:

$("<span>{{ session['username'] }}$ > " + $query + "</span><br />").appendTo("#output"); 

在这里,您只需在用户加载页面时设置好用户名,即使用户对其进行了更新也是如此。

你应该做这样的事情:

$("<span>"+data[username] + $query + "</span><br />").appendTo("#output"); 

和后端,一个是这样的:

def cmd: 
    ... 
    output[username] = session["username"] 
    ... 
相关问题