0

私はRPiにかなり標準的なLAMPをインストールしています。

インジケーターとボタンを備えたHTMLインターフェイスがあります。Jqueryを使用してサーバー側のテキストファイルをインジケーターに読み込むのですが、ボタンでインジケーターを調整したいと思います。

私の実装は、cgiを介してPythonスクリプトを実行するボタンを備えたフォームです。アイデアは、Pythonスクリプトにjqueryがインジケーターに読み込んでいるファイルを編集させることです。テキストファイルをハードウェア制御に読み込む他のスクリプトがサーバー上で実行されるため、この中間ファイルは重要です。

問題は、Pythonスクリプトの実行によってページがリダイレクトされることです。静かに実行するためのスクリプトが必要です。

ありがとう。C

4

1 に答える 1

0

ここでの答えは、非常に些細なajax呼び出しによるcgiまたはwsgiのいずれかです。振り返ってみると、この質問を振り返るのはおもしろいです。

jquery、この場合はsqliteデータベースでクエリを実行します。

function wsgiCallbackTableData (database,table,callback) {
    // Get the data
    //alert(database + ' ' + table + ' ' + callback)
    $.ajax({
        url: "/wsgisqlitequery",
        type: "post",
        datatype:"json",                        
        data: {'database':database,'table':table},
        success: function(response){
            //alert("I worked");
            // Execute our callback function
            callback(response);                                     
        }
     });    
}

Python:

def application(environ, start_response):

import cgi
import json
from pilib import dynamicsqliteread, sqlitequery

post_env = environ.copy()
post_env['QUERY_STRING'] = ''
post = cgi.FieldStorage(
    fp=environ['wsgi.input'],
    environ=post_env,
    keep_blank_values=True
)

formname=post.getvalue('name')
data={}
d={}
for k in post.keys():
    d[k] = post.getvalue(k)

status = '200 OK'

# Run stuff as requested

if 'length' in d:                   # Handle table row subset
    data=dynamicsqliteread(d['database'],d['table'],d['start'],d['length'])
elif 'row' in d:                    # Handle table row
    data=dynamicsqliteread(d['database'],d['table'],d['row'])

elif 'table' in d:                  # Handle entire table
    data=dynamicsqliteread(d['database'],d['table'])
elif 'query' in d:                          # Take plain single query
    result=sqlitequery(d['database'],d['query'])
    data=result
elif 'queryarray[]' in d:           # Take query array, won't find
    result=[]
    for query in d['queryarray[]']:
        result.append(sqlitequery(d['database'],query))
    data=result
else:
    data=['empty']

output = json.dumps(data,indent=1)

response_headers = [('Content-type', 'application/json')]
start_response(status,response_headers)

return [output]

pilibには、動的呼び出しにパックされたsqliteコマンドの非常に基本的なセットが含まれています。

于 2013-09-13T04:26:07.247 に答える