0

我有一个使用 HTML 按钮调用的 python 例程。我无法使用 AJAX 从该按钮调用。它必须是通过 URL 进行的调用,例如

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

但是我如何引用发布运行 HTML 的服务器,因为该服务器可能是发布此站点的众多服务器之一?这是 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

TIA

丹麦

4

1 回答 1

0

解决方案是使用window.location.hostDOM 间接获取服务器引用,并且必须在前面加上'HTTP://'这两者将生成一个HTTP://soandso.com:8050带有端口号的 URL,以标识正在运行的站点。该站点现在可以补充一个对象函数,例如csvExport获取对您尝试进行的调用的最终和完整 URL 引用。例如'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 方法。

丹麦

于 2013-07-03T15:52:47.303 回答