2016-04-27 52 views
0

我正在處理一個pythonfile,它返回變量「distance」,並將它發送到一個javascriptfile,我可以將該值放在我的網頁上。如何將JSON數據從python返回給javascript?

我的問題是,我不知道如何將值從python發送到JavaScript。我聽說你必須使pythonfile以JSON格式返回,然後發出ajax請求,但是我找不到如何在任何地方執行該操作。

我的問題是:我如何設置連接,使我得到JavaScript中的JSON數據?我真的很會appriciate,如果有人向我展示了使用代碼,我對Python和JavaScript都很新。

編輯: 數據來自帶距離傳感器的RaspberryPi。我的Python代碼是:

import RPi.GPIO as GPIO 
import time 
import io, json 

GPIO.setmode(GPIO.BCM) 
TRIG = 14 
ECHO = 15 

GPIO.setup(TRIG,GPIO.OUT) 
GPIO.setup(ECHO,GPIO.IN) 

revers = 1 

while revers == 1: 

    GPIO.output(TRIG,0) 
    time.sleep(0.5) 

    GPIO.output(TRIG,1) 
    time.sleep(0.00001) 
    GPIO.output(TRIG,0) 

    while GPIO.input(ECHO)==0: 
     pulse_start = time.time() 

    while GPIO.input(ECHO)==1: 
     pulse_end = time.time() 

    pulse_duration = pulse_end - pulse_start 
    distance = pulse_duration * 17150 
GPIO.cleanup() 

我還沒有到JavaScript編寫任何東西,只是因爲我不知道如何使Ajax調用,但我的目標是使可變距離成JSON格式並把它放在我的網頁上。

+0

這裏錯過了一大堆細節。你在說什麼「pythonfile」?據推測,這是某種Python Web框架,但你還沒有說過關於哪一個,或者到目前爲止你有什麼代碼。 –

+0

發佈你已經編碼的代碼 –

+0

對不起,我是使用計算器的新手。我已經編輯了我的帖子,現在已經有了我的代碼 –

回答

2

您的服務器上的python程序可以以任何您想要的格式返回任何值,但json是一種方便的格式,可以通過python程序和javascript輕鬆處理。

您的JavaScript需要發送請求到服務器。該請求將指定它想要檢索python文件。請注意,javascript請求是針對某些事件發送的 - 就像用戶單擊按鈕一樣。

python程序將駐留在服務器的目錄結構的某處。如果您的服務器安裝正確,那麼當收到對python文件的請求時,服務器將執行python程序並返回python程序的輸出,而不是返回python文件的文本。

最簡單的製作ajax(即javascript)請求的方法是使用jquery。關於如何使用jquery進行ajax請求,實際上有10,000個教程,博客等。這裏是一個:

http://www.tutorialspoint.com/jquery/jquery-ajax.htm

這裏是jQuery的文檔的相關信息:

https://api.jquery.com/jquery.get/

我很新的Python和JavaScript的..

然後你想要的程序很可能太複雜了。

這裏是一個Ajax例子:

page.html中

<!DOCTYPE html> 
<html> 
<head> 
    <title>My Web Page</title> 
</head> 

<body> 
    <p>Hello</p> 
    <button id="my_button" type="button">Click me</button> 
    <div id="ajax_results"></div> 

<!-- Download jquery library: --> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 

<!-- My jquery code: --> 
<script> 
    $("#my_button").on('click', function() { 
    $.get("http://localhost:8080/cgi-bin/my_prog.py", function(data) { 
     $("#ajax_results").text(data); 
    }) 
    }); 
</script> 

</body> 
</html> 

我使用下面的URL在瀏覽器中讓我的本地服務器發出請求:

http://localhost:8080/page.html 

這在我的瀏覽器中加載page.html。由於頁面加載,我的jQuery代碼執行,它增加了一個onclick處理程序的按鈕:

$("#my_button").on('click', function() {.... 

之後,如果點擊按鈕,該功能將被執行。

下面的Python程序駐留在一個目錄我的本地服務器上:

my_prog.py

#!/usr/bin/env python3.4 

print("Content-Type: text/html\n\n") 
distance = 10 
print(distance) #This is the body of the response 

如果我點擊網頁中顯示的按鈕,jQuery代碼發送向服務器請求文件my_prog.py:

$.get("http://localhost:8080/cgi-bin/my_prog.py", .... 

我的服務器設置爲執行該文件 - 而不是返回n文件的文本 - 然後服務器返回程序的輸出作爲響應。

當jQuery代碼接收來自服務器的響應,調用jquery的以下函數:

function(data) { 
    $("#ajax_results").text(data); 
}) 

傳遞體的響應作爲參數的。該函數將響應的主體,數據插入標記爲「ajax_results」的html標記中。因爲響應的主體是字符串「10」,所以10被顯示在網頁中。

相關問題