2012-10-13 3 views
1

세션은 파이썬 코드로 설정됩니다. 플라스크를 프레임 워크로 사용합니다. 세션 사용자 이름 값은 사용자가 페이지를 다시로드 할 때까지 동일하게 유지됩니다. 자바 스크립트로 세션 값의 변경에 응답하거나 전체 페이지를 다시로드하지 않고 필요한 부분을 다시로드하는 방법이 있다면? 감사.자바 스크립트가 세션을 업데이트하지 않고 페이지 리로드 만 작업을 수행합니다

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

들으 로빈, 편집 – user1743703

답변

0

내가 플라스크에 대해 잘 모르지만, 당신이 실수하고있다 저에게 보인다

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

사용자가 페이지를로드 할 때만 사용자 이름을 설정하고 사용자가 페이지를로드 할 때도 사용자 이름을 설정합니다.

당신은 같은 일을해야

:

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

및 백엔드에서을 (A)는 무엇인가 :

def cmd: 
    ... 
    output[username] = session["username"] 
    ... 
관련 문제