Chúng tôi có yêu cầu chạy tập lệnh python từ Javascript. Chúng tôi phải chuyển một Chuỗi đầu vào cho tập lệnh python làm đối số và hiển thị đầu ra python trên trang web của chúng tôi
Đây là mã Python, mã này hoạt động tốt khi tôi chạy mã này trong hộp linux của mình. ./sample.py 12345
, đưa ra kết quả là 12345
và ./sample.py
sẽ hiển thị no argument found
#!/usr/bin/env python
import os
import sys
if len[sys.argv] > 1:
output = sys.argv[1]
else:
output = "no argument found"
print "Hello World!!!"
print output
Làm cách nào để truy cập 'param' từ lệnh gọi ajax trong python ở trên và sử dụng giá trị đó làm đối số?
Javascript
$.ajax[{
type: 'POST',
url: "scripts/sample.py",
data: {param: xyz}, //passing some input here
dataType: "text",
success: function[response]{
output = response;
alert[output];
}
}].done[function[data]{
console.log[data];
alert[data];
}];
Mọi sự trợ giúp sẽ rất được trân trọng
CHỈNH SỬA
Như đã đề xuất, tôi đang cố gắng để mã của mình hoạt động bằng CGI
#!/Python34/python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
data= cgi.FieldStorage[]
# Get data from fields
output = data["param"]
# This will print to stdout for testing
print["Hello World!!!"]
print[output]
Bất cứ khi nào cuộc gọi Ajax được chạy, phản hồi là. [đối tượng HTMLDivElement], khi được mở trong Firebug sẽ hiển thị toàn bộ văn bản của tập lệnh python. Tôi đang thiếu gì ở đây?
Được hỏi bởi. ritusmart
||
Nguồn
Trả lời 1
Cuộc gọi Ajax của bạn sẽ là một yêu cầu web _______ đối với tập lệnh python, vì vậy tập lệnh python của bạn cần lắng nghe trên cổng đối với các yêu cầu đó và phản hồi lại
Phương pháp được đề cập ở trên được khuyến nghị, để sử dụng máy chủ web đơn giản bên trong mẫu của bạn, py hoặc bạn có thể sử dụng một máy chủ hiện có như Flask [hoặc nhiều phương pháp khác]
FYI - đối với nhiệm vụ đơn giản của bạn, tôi không khuyên dùng Django [đây là một khung web lớn và nặng với nhiều chuông mà bạn không cần]
trả lời bởi. Vlad Gulin
Câu trả lời số 2
Lấy dữ liệu từ các trường nên được thực hiện như sau
# Get data from fields
output = data.getvalue["param"]
Ngoài ra, tôi nhận ra rằng có vấn đề về ^M ký tự trong khi cố gắng thực thi, vấn đề này tôi đã giải quyết bằng cách sử dụng trình soạn thảo vi
trả lời bởi. ritusmart
Câu trả lời số 3
Hoàn toàn minh bạch, tôi là người đóng góp cho repo GitHub này. Tôi đã có thể giải quyết vấn đề này bằng cách sử dụng trình kích hoạt WayScript AJAX
Gọi tệp máy chủ từ giao diện người dùng [HTML] là trường hợp sử dụng phổ biến cho mọi trang web động. Tất cả các trang web động kết nối với máy chủ thông qua các phương pháp khác nhau
Bài viết này hướng dẫn cách gọi Python từ JavaScript
Sử dụng ajax
để gọi Python từ JavaScript
AJAX là viết tắt của JavaScript và XML không đồng bộ. Nó sử dụng đối tượng XMLHttpRequest
để giao tiếp với các máy chủ
Nó có thể gửi và nhận thông tin ở nhiều định dạng, bao gồm tệp HTML, XML, JSON và văn bản. Tính năng thú vị nhất của AJAX là tính chất “không đồng bộ” của nó, có nghĩa là nó có thể giao tiếp với máy chủ, trao đổi dữ liệu và làm mới trang mà không cần phải làm mới trang.
Hai tính năng chính của AJAX cho phép bạn thực hiện dưới đây
- Thực hiện các yêu cầu không đồng bộ tới máy chủ mà không cần tải lại trang HTML/JavaScript
- Nhận dữ liệu từ máy chủ và xử lý theo yêu cầu của khách hàng
cú pháp
$.ajax[{
url: "SERVER_URL",
data: { param: text },
type: "HTTP_METHOD",
}].done[function[] {
/* Process the data */
}];
- Phương thức
ajax
chấp nhận URL làm tham số đầu vào, một chuỗi chứa URL mà yêu cầu được gửi tới - Dữ liệu là một đối tượng
JSON
chứa các tham số để gửi đến máy chủ. Nếu phương thứcHTTP
là phương thức không thể có phần thân thực thể, chẳng hạn nhưGET
, thì dữ liệu sẽ được thêm vào URL type
là phương phápHTTP
được sử dụng để yêu cầu máy chủ
0 là một cấu trúc thay thế cho tùy chọn gọi lại thành công và vui lòng tham khảo$.ajax[{ type: "POST", url: "~/helloWorld.py", data: { param: "hello world", } }].done[[o] => { console.log[o] }];
1 để biết chi tiết triển khai$.ajax[{ type: "POST", url: "~/helloWorld.py", data: { param: "hello world", } }].done[[o] => { console.log[o] }];
Thí dụ
$.ajax[{
type: "POST",
url: "~/helloWorld.py",
data: {
param: "hello world",
}
}].done[[o] => {
console.log[o]
}];
Trong đoạn mã trên, chúng tôi thực hiện các yêu cầu
$.ajax[{
type: "POST",
url: "~/helloWorld.py",
data: {
param: "hello world",
}
}].done[[o] => {
console.log[o]
}];
2 tới máy chủ với tham số là $.ajax[{
type: "POST",
url: "~/helloWorld.py",
data: {
param: "hello world",
}
}].done[[o] => {
console.log[o]
}];
3. Nó sẽ gọi tệp Python $.ajax[{
type: "POST",
url: "~/helloWorld.py",
data: {
param: "hello world",
}
}].done[[o] => {
console.log[o]
}];
4, tệp này sẽ chấp nhận các tham số đầu vào và xử lý dữ liệu