0

HTMLボタンで呼び出すpythonルーチンがあります。そのボタンからAJAXで呼び出すことはできません。次のような URL 経由の呼び出しである必要があります。

onClick="location.href='server/csvExport'"> 

しかし、実行中の HTML を発行したサーバーをどのように参照すればよいでしょうか? そのサーバーは、このサイトを発行している多くのサーバーの 1 つかもしれません。これは、メイン オブジェクトの公開されたメソッドである Python サイド コードです。実行中のサーバーは CherryPy に基づいています。

def csvExport(self, **kwargs):

    sql = '''SELECT * FROM ...
    "...
    "...
    xLine += f2+f3+f1+f6+f8+f4+"\n"

    rtr = xLine
    CSV_Filename  = "ExportReport"

    cherrypy.response.headers['content-type'] = 'text/csv'
    cherrypy.response.headers['content-disposition'] = 'attachment; filename=%s.csv'% CSV_Filename

    return rtr

csvExport.exposed = True

ティア

DK

4

1 に答える 1

0

解決策は、window.location.hostDOM インダイレクションを使用してサーバー参照を取得することです。この 2 つは、実行中のサイトを識別するポート番号の'HTTP://'ような URL を生成します。そのサイトは、行おうとしている呼び出しへの最終的な完全な URL 参照を取得するHTTP://soandso.com:8050などのオブジェクト関数で補完できるようになりました。csvExportたとえば'HTTP://soandso.com:8050/csvExport'、このサイトを実行しているサーバーを参照するのに十分です。

jQuery を使用して、このイベントをボタンに埋め込む実用的な方法を次に示します。

        dLoadCall = window.location.host+"/csvExport";
        dLoadCall2 = "window.open('http://"+dLoadCall+"')";
        $("#dload").attr("onClick",dLoadCall2);

イベント挿入前の HTML ボタンは次のようになります。

<input id="dload" type="button" value="Export CSV"/>

そして、これはその後の様子です:

<input id="dload" type="button" value="Export CSV" onclick="window.open('http://192.168.19.249:8140/csvExport')">`

これで、ボタンをクリックして、csvExport:このサイトにサービスを提供しているサーバーで Python メソッドを呼び出すことができます。

DK

于 2013-07-03T15:52:47.303 に答える