[英]How to print javascript data in Python terminal
我有一個 javascript 文件,一個 html 文件和一個 python 文件。 在 Java 腳本 function 中,事件生成了一個數據,我可以在瀏覽器控制台中看到該數據。 我也想在 python 中查看此數據。 我在一個名為 Hype4 的程序中創建了該網站,並自動生成了 javascript 和 html 文件。 我寫了 javascript function 和 python 文件,但是我不能從 js function 發送數據到 python。
Python 文件:
from flask import Flask, render_template, request, jsonify
import json
import pandas as pd
app = Flask(__name__)
@app.route("/")
def index():
return render_template("cafeproje.html")
@app.route('/receiver', methods = ["POST"])
def receiver():
data = request.get_json()
df = pd.read_json(data)
print(data)
return jsonify(data)
if __name__=="__main__":
app.run(debug=True)
Html 檔案:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="chrome=1,IE=edge" />
<title>CafeProje</title>
<style>
html {
height:100%;
}
body {
background-color:#FFF;
margin:0;
height:100%;
}
</style>
<!-- copy these lines to your document head: -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<meta name="viewport" content="user-scalable=no, width=320" />
<!-- end copy -->
</head>
<body>
<!-- copy these lines to your document: -->
<div id="cafeproje_hype_container" class="HYPE_document" style="margin:auto;position:relative;width:100%;height:100%;overflow:hidden;"></div>
<script src="static/js/cafeproje_hype_generated_script.js"></script>
<!-- end copy -->
<!-- text content for search engines: -->
<div style="display:none" aria-hidden=true>
<div>Garson Seçiniz</div>
<div>0</div>
<div>Garson İlgili miydi?</div>
<div> Arga Tek. Hizmetinizde</div>
<div></div>
<div>Garson Titiz miydi?</div>
<div>Garson Hızlı mıydı?</div>
<div>Evet</div>
<div>Tuvaleti Kullandınız mı?</div>
<div>Hayır</div>
<div>Anketimiz Bu Kadardı Teşekkürler</div>
<div>Tuvaletler Temiz Miydi?</div>
</div>
<!-- end text content: -->
</body>
</html>
Javascript Function:
function veriGonder (hypeDocument, element, event){
if (sayfaNo == "1") {
var id = idKaydet;
var sayfa = sayfaNo;
var garson = garson;
var oy = "NONE";
var secenek = "NONE";
datas = [{ id: idKaydet, sayfa: sayfaNo, garson: garson }]; console.log("Sayfa 1 Gönderildi: ");
console.log(datas);
$.ajax({
type: "POST",
url:"/receiver",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ id: idKaydet, sayfa: sayfaNo, garson: garson })
});
}
else if (sayfaNo == "2") {
var id = idKaydet;
var sayfa = sayfaNo;
var garson = "NONE";
var oy = oyMiktari;
var secenek = "NONE";
datas = [{ id: idKaydet, sayfa: sayfaNo, oy: oyMiktari }]; console.log("Sayfa 2 Gönderildi: ");
console.log(datas);
$.ajax({
type: "POST",
url:"/receiver",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ id: idKaydet, sayfa: sayfaNo, oy: oyMiktari })
});
}
else if (sayfaNo == "3") {
var id = idKaydet;
var sayfa = sayfaNo;
var garson = "NONE";
var oy = oyMiktari;
var secenek = "NONE";
datas = [{ id: idKaydet, sayfa: sayfaNo, oy: oyMiktari }]; console.log("Sayfa 3 Gönderildi: ");
console.log(datas);
$.ajax({
type: "POST",
url:"/receiver",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ id: idKaydet, sayfa: sayfaNo, oy: oyMiktari })
});
}
else if (sayfaNo == "4") {
var id = idKaydet;
var sayfa = sayfaNo;
var garson = "NONE";
var oy = oyMiktari;
var secenek = "NONE";
datas = [{ id: idKaydet, sayfa: sayfaNo, oy: oyMiktari }]; console.log("Sayfa 4 Gönderildi: ");
console.log(datas);
$.ajax({
type: "POST",
url:"/receiver",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ id: idKaydet, sayfa: sayfaNo, oy: oyMiktari })
});
}
else if (sayfaNo == "5") {
var id = idKaydet;
var sayfa = sayfaNo;
var garson = "NONE";
var oy = "NONE";
var secenek = secenek;
datas = [{ id: idKaydet, sayfa: sayfaNo, secenek: secenek }]; console.log("Sayfa 5 Gönderildi: ");
console.log(datas);
$.ajax({
type: "POST",
url:"/receiver",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ id: idKaydet, sayfa: sayfaNo, secenek: secenek })
});
}
else if (sayfaNo == "5m1") {
var id = idKaydet;
var sayfa = sayfaNo;
var garson = "NONE";
var oy = oyMiktari;
var secenek = "NONE";
datas = [{ id: idKaydet, sayfa: sayfaNo, oy: oyMiktari }]; console.log("Sayfa 5m1 Gönderildi: ");
console.log(datas);
$.ajax({
type: "POST",
url:"/receiver",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ id: idKaydet, sayfa: sayfaNo, oy: oyMiktari })
});
}
}
Hype4 自動生成的 javascript 代碼(分享鏈接,因為它不適合這里): https://www.codepile.net/pile/wA75kWrj
@巴爾德曼
Python:
from flask import Flask, render_template, request, jsonify
import json
import pandas as pd
app = Flask(__name__)
@app.route("/")
def index():
return render_template("cafeproje.html")
@app.route('/receiver', methods = ["POST"])
def receiver():
print("we are here")
data = request.get_json()
df = pd.read_json(data)
print(data)
return jsonify(data)
if __name__=="__main__":
app.run(debug=True)
我沒有更改其他代碼。
Output:
* Serving Flask app "cafeproje" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 250-177-957
127.0.0.1 - - [22/Sep/2020 12:18:26] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [22/Sep/2020 12:18:28] "POST /receiver HTTP/1.1" 500 -
Traceback (most recent call last):
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Volumes/GoogleDrive/Ortak Drive'lar/Arga Tek/Tunahan/ProjeCafeDeneme/cafeproje.py", line 17, in receiver
df = pd.read_json(data)
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/pandas/util/_decorators.py", line 214, in wrapper
return func(*args, **kwargs)
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/pandas/io/json/_json.py", line 585, in read_json
path_or_buf, encoding=encoding, compression=compression
File "/Users/tunahan/opt/anaconda3/envs/CafeProjesiDeneme/lib/python3.7/site-packages/pandas/io/common.py", line 200, in get_filepath_or_buffer
raise ValueError(msg)
ValueError: Invalid file path or buffer object type: <class 'dict'>
請閱讀read_json的文檔:
參數 path_or_buf有效的 JSON str ,路徑 object 或類似文件的 object
您沒有向那里傳遞有效的 JSON str 。 您正在向那里傳遞一本您創建了更高一行的字典:
data = request.get_json() # this returns a dictionary
這就是為什么您收到參數是字典的錯誤的原因:
Invalid file path or buffer object type: <class 'dict'>
刪除行data = request.get_json()
並將響應作為json 字符串傳遞給read_json()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.