如何在Python终端中打印javascript数据

2024-09-28 19:03:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个javascript文件、一个html文件和一个python文件。在Java脚本函数中,作为事件的结果生成一个数据,我可以在浏览器控制台中看到该数据。我也想在python中看到这些数据。我在一个名为Hype4的程序中创建了这个网站,javascript和html文件是自动生成的。我编写了javascript函数和python文件,但无法从js函数向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 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


Tags: divnonelogiddatavarconsoleoy
2条回答

@balderman

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)

我没有更改其他代码

输出:

* 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的文档:

Parameters path_or_buf a valid JSON str, path object or file-like 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()

相关问题 更多 >