Để lấy dữ liệu từ JavaScript đến Python bằng bình, bạn sẽ thực hiện yêu cầu POST AJAX hoặc AJAX nhận yêu cầu với dữ liệu của bạn.
Flask có sẵn sáu phương thức HTTP, trong đó chúng tôi chỉ cần nhận và đăng. Cả hai sẽ lấy
@app.route['/postmethod', methods = ['POST']]
def get_post_javascript_data[]:
jsdata = request.form['javascript_data']
return jsdata
0 làm tham số, nhưng có được nó theo những cách khác nhau. Đó là cách hai ngôn ngữ hoàn toàn khác nhau trong hai môi trường khác nhau như Python và JavaScript trao đổi dữ liệu.Đầu tiên, khởi tạo một tuyến đường trong bình:
@app.route['/getmethod/']
def get_javascript_data[jsdata]:
return jsdata
hoặc một bài đăng một:
@app.route['/postmethod', methods = ['POST']]
def get_post_javascript_data[]:
jsdata = request.form['javascript_data']
return jsdata
Cái đầu tiên được truy cập bởi
@app.route['/postmethod', methods = ['POST']]
def get_post_javascript_data[]:
jsdata = request.form['javascript_data']
return jsdata
1 với AJAX nhận được như sau:$.get[ "/getmethod/" ];
Cái thứ hai bằng cách sử dụng yêu cầu POST AJAX:
$.post[ "/postmethod", {
javascript_data: data
}];
Trong đó
@app.route['/postmethod', methods = ['POST']]
def get_post_javascript_data[]:
jsdata = request.form['javascript_data']
return jsdata
2 là một dict json hoặc một giá trị đơn giản.Trong trường hợp bạn chọn JSON, hãy đảm bảo bạn chuyển đổi nó thành một dict trong Python:
json.loads[jsdata][0]
Eg.
GET:
@app.route['/getmethod/']
def get_javascript_data[jsdata]:
return json.loads[jsdata][0]
POST:
@app.route['/postmethod', methods = ['POST']]
def get_post_javascript_data[]:
jsdata = request.form['javascript_data']
return json.loads[jsdata][0]
Nếu bạn cần thực hiện theo cách khác, hãy đẩy dữ liệu Python xuống JavaScript, hãy tạo một tuyến đường đơn giản mà không có các tham số trả về Dict được mã hóa JSON:
@app.route['/getpythondata']
def get_python_data[]:
return json.dumps[pythondata]
Lấy nó từ jQuery và giải mã nó:
$.get["/getpythondata", function[data] {
console.log[$.parseJSON[data]]
}]
@app.route['/postmethod', methods = ['POST']]
def get_post_javascript_data[]:
jsdata = request.form['javascript_data']
return jsdata
3 trong @app.route['/postmethod', methods = ['POST']]
def get_post_javascript_data[]:
jsdata = request.form['javascript_data']
return jsdata
4 là ở đó bởi vì khi bạn giải mã được một Dict được mã hóa JSON trong Python, bạn sẽ nhận được một danh sách với Dict duy nhất bên trong, được lưu trữ tại Index 0, vì vậy dữ liệu được giải mã JSON của bạn trông như thế này:[{'foo':'bar','baz':'jazz'}] #[0: {'foo':'bar','baz':'jazz'}]
Vì những gì chúng ta cần là chỉ là dict bên trong chứ không phải danh sách, chúng ta nhận được các mục được lưu trữ tại INDEX 0 là Dict.
Ngoài ra,
@app.route['/postmethod', methods = ['POST']]
def get_post_javascript_data[]:
jsdata = request.form['javascript_data']
return jsdata
5. Trong hướng dẫn này, chúng tôi sẽ xem xét cách chuyển các biến JavaScript sang biến Python trong bình.
Trong JavaScript, các biến lưu trữ dữ liệu có thể được sử dụng hoặc chỉnh sửa sau này. Thường được lấy làm đầu vào, các giá trị này thường được sử dụng ở phía máy chủ. Sử dụng khung bình Python và AJAX, chúng ta có thể chuyển các giá trị JavaScript này đến hàm Python.
Chuyển một biến JavaScript sang biến Python trong bình
Chúng tôi sẽ bao gồm hai thành phần cần thiết để thực hiện thao tác này.
1. Đầu tiên, chúng tôi sẽ hình thành trang HTML của mình, với khu vực đầu vào cơ bản và hàm JavaScript để truyền giá trị cùng.
Chúng tôi có hàm title [] đang gọi hàm javaScript sendUserInfo [] của chúng tôi. Bây giờ, có một vài điều khoản để hiểu ở đây.
- GetEuityByID là một phương thức trả về các giá trị có ID khớp với chuỗi được đưa ra trong phương thức. Và mặc dù chúng tôi không chuyển bất kỳ giá trị nào cho hàm JavaScript, nhưng nó nhận được giá trị.
- Xmlhttpresponse [phương thức/url] là một đối tượng AJAX. Nó được sử dụng trong việc gửi dữ liệu đến máy chủ web. Tạo một đối tượng xmlhttpresponse và truyền giá trị của bạn thông qua nó.
- JSON.StringFy là một phương pháp JSON phổ biến. Khi chuyển dữ liệu cho dữ liệu máy chủ web phải chuỗi và phương thức .StringFy giúp chúng tôi làm điều đó.
2. Bây giờ, chúng tôi đến với mã bình. Dữ liệu đã được truyền đến chức năng Python và bây giờ chúng ta phải nhận được nó. Hãy nhớ rằng, chúng tôi đã gửi dữ liệu ở định dạng chuỗi JSON và bây giờ chúng tôi phải mở nó. json.loads, nó nhận được chuỗi JSON và chuyển đổi nó thành từ điển Python.
Và, đây là cách bạn có thể truyền một biến JavaScript được chuyển cho chức năng Python bằng bình.
Bạn cũng có thể tham khảo các hướng dẫn khác của tôi -
- Ma trận nhầm lẫn bằng cách sử dụng Scikit-learn trong Python