在Python中从Ajax请求中提取数据

时间:2019-05-30 09:25:28

标签: javascript python ajax flask

我不确定如何在Flask的python应用程序中从Java代码中的Ajax请求中提取数据。我的Ajax请求不使用jQuery。

我尝试在Python代码中使用request.form.get()request.get_json(),但是两者都产生一个None值。

@app.route("/", methods=["GET", "POST"])
def index():
    if not request.get_json() == None: 
        print(request.get_json())
        name = request.get_json()
        session["name"] = name.user
    return render_template("index.html", channels=channels)

在我的Javascript代码中,我执行了一个简单的Ajax请求:

    if(localStorage.getItem("user")) {
        document.querySelector("#logout").addEventListener("click", () => {
            localStorage.removeItem("user");
        })

        const request = new XMLHttpRequest();
        request.open("POST", "/")
        user = JSON.stringify(localStorage.getItem("user"))
        request.send(user)
    }

2 个答案:

答案 0 :(得分:1)

数据应该进入class ViewController: UIViewController, UIPopoverPresentationControllerDelegate { @IBOutlet weak var textField: UITextField! @IBAction func onTapButton(_ sender: UIButton) { let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "PopoverVC") as! PopoverVC controller.text = "Enter valid Mobile Number" controller.modalPresentationStyle = .popover controller.preferredContentSize = CGSize(width: 300 , height: 70) let popover = controller.popoverPresentationController popover?.delegate = self popover?.permittedArrowDirections = .down popover?.sourceView = self.textField popover?.sourceRect = self.textField.bounds self.present(controller, animated: true, completion: nil) } func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { return .none } } 而不是request.get_data()

推荐request.get_jsonrequest.get_data了解更多信息

答案 1 :(得分:0)

如果我很清楚地理解,您不希望只发送('user':'value')之类的整个字典。

在这种情况下,request.get_data()可以正常工作:

from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods=["GET","POST"])
def index():
    data = open('index.html').read()
    print request.get_data()
    return data

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

index.html是带有按钮的简单页面,该按钮触发以下javascript:

var request = new XMLHttpRequest()
request.open("POST","/", true)
var send_data = "Hello World"
request.send(send_data)