2016-09-05 44 views
-1

我試圖爲我正在製作的演示文稿設計一個交互式網站。我對所有這些瓶子都很陌生,而且我很難理解爲什麼我的代碼不起作用。試圖從js使用jQuery和Flask調用python函數

我想創建一個網站,它的每一行都是可點擊的,點擊後我想綁定一個python函數,根據行的文本做一些計算並替換該文本。 對於我建立一個簡單的HTML:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>click demo</title> 
</head> 
<body> 


<p>2016-04-21 09:12:59</p> 
<p>Second Paragraph</p> 
<p>2016-04-21 09:12:59 bla bla</p> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script> 

$("p").click(function() { 
    $.getJSON('/background_process', { 
     line: $(this).text(), 
    }, function(data) { 
     $(this).text(data.result); 
    }); 
     return false; 
}); 

</script> 

</body> 
</html> 

我也寫了一次,我點擊我的網頁上的一些行應綁定燒瓶代碼:

from flask import Flask, jsonify 
app = Flask(__name__) 
from flask import render_template 
import re 


@app.route("/") 
def index(): 
    return render_template('index.html') 

@app.route("/background_process") 
def background_process(): 
    try: 
     lang = request.args.get('line', 0, type=str) 
     string = lang.split()[0] 
     if re.match(r'\d\d\d\d-\d\d-\d\d',string): 
      return jsonify(result=string) 
     else: 
      return jsonify(result="Doesnt start with a date") 
    except Exception as e: 
     return str(e) 
if __name__ == "__main__": 
    app.run() 

的問題是,該函數由於某種原因,不工作,除非我指定哪個位置將文本按插槽的id放在我的html頁面中,而我無法理解哪裏出了問題。

回答

1

你的應用有兩個問題。 第一個是,你是不是導入請求模塊:

from flask import Flask, jsonify, request 

其次,在你的模板,你是指this是超出範圍。 這應該工作:

$("p").click(function() {                    
    var this_p = this;                      
    $.getJSON('/background_process', {                  
     line: $(this_p).text(),                   
    }, function(data) {                     
     $(this_p).text(data.result);                  
    });                         
     return false;                      
});