Làm cách nào để gọi tệp python từ ajax?

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./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

  1. 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
  2. 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 */
}];

  1. 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
  2. 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ức HTTP 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
  3. type là phương pháp HTTP được sử dụng để yêu cầu máy chủ
  4. $.ajax[{
      type: "POST",
      url: "~/helloWorld.py",
      data: {
        param: "hello world",
      }
    }].done[[o] => {
       console.log[o]
    }];
    
    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

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

Làm cách nào để gọi tập lệnh Python từ AJAX?

$. ajax[{ loại. 'POST', url. "kịch bản/mẫu. py", dữ liệu. {thông số. xyz}, // chuyển một số dữ liệu đầu vào vào đây Kiểu dữ liệu. "văn bản", thành công. chức năng [phản hồi]{ đầu ra = phản hồi; . xong [chức năng [dữ liệu] { bảng điều khiển. nhật ký [dữ liệu];

Làm cách nào tôi có thể gọi từ AJAX?

Để sử dụng AJAX trong JavaScript, bạn cần thực hiện bốn việc. .
tạo một đối tượng XMLHttpRequest
viết hàm gọi lại
mở yêu cầu
gửi yêu cầu

Làm cách nào để gọi tập lệnh Python từ jQuery?

Bạn cần một cái gì đó như thế này để in từng dòng được lưu trữ trong mảng. exec["tập lệnh python. py", $output]; echo implode[ "\n", $output ]; Ngoài ra, như đã nêu trong các nhận xét, tập lệnh Python phải thực sự xuất ra những gì bạn muốn chuyển tới PHP, vì vậy .

Chủ Đề