簡體   English   中英

將python列表傳遞給javascript

[英]passing python list to javascript

我正在嘗試將python列表傳遞給javascript函數,但是它不起作用...我認為Javascript函數會將其視為一個長字符串。 這是我的工作:

@webiopi.macro
def calcSunriseSunsetOneYear():
    o=ephem.Observer()
    o.lat='51.21828'
    o.long='3.94958'
    s=ephem.Sun()
    d=datetime.date.today()

    t=timedelta(days=1)
    d=d+t
    o.date=d

    riseTime=[]
    setTime=[]
    s.compute()
    for x in range (0,365):
        o.date=o.date+1
        riseTime.append(str(ephem.localtime(o.next_rising(s))))
        setTime.append(str(ephem.localtime(o.next_setting(s))))
    return(json.dumps(riseTime))

這是python數據:

["2015-03-22 06:43:02.000006", "2015-03-23 06:40:46", "2015-03-24 06:38:31.000001", "2015-03-25 06:36:15.000002", "2015-03-26 06:33:59.000003", "2015-03-27 06:31:44.000004", "2015-03-28 06:29:28.000005", "2015-03-29 07:27:13.000006", "2015-03-30 07:24:57", "2015-03-31 07:22:42.000001", "2015-04-01 07:20:27.000002", "2015-04-02 07:18:13.000003", "2015-04-03 07:15:58.000004", "2015-04-04 07:13:44.000005", "2015-04-05 07:11:31.000006", "2015-04-06 07:09:17", "2015-04-07 07:07:04.000001", "2015-04-08 07:04:52.000002", "2015-04-09 07:02:40.000003", "2015-04-10 07:00:28.000004"]

在Javascript中,我這樣做:

var printChart = function macroCallBack(macro, args, chartInfo) {
        document.getElementById("chartInfo").innerHTML=chartInfo;
        var arLength=chartInfo.length;
        console.log("arLength is: ",arLength);
        for (var i=0; i<arLength; i++) {
            console.log(chartInfo[i]);
        }
    }

控制台在單獨的一行上打印python列表的每個字符,如下所示:

[“ 2 0 1 5等...

我無法格式化上面的console.log輸出,但是每個字符都位於單獨的行上。

而且數組的長度與總字符串的長度完全相同,所以我的結論是將python列表轉換為Javascript作為一個長字符串...

我希望有人能幫助我!

是的,您正在遍歷字符串。 這是因為json是字符串。 這使得在不同的編程語言之間傳遞數據非常容易,因為字符串是幾乎每種編程語言都實現的數據類型。 但是,由於它是字符串,因此需要將字符串解碼為可用的格式/對象。 在javascript中,您可以使用JSON.parse()方法。

jsfiddle演示

var frompythonjsonstring ='["2015-03-22 06:43:02.000006", "2015-03-23 06:40:46", "2015-03-24 06:38:31.000001", "2015-03-25 06:36:15.000002", "2015-03-26 06:33:59.000003", "2015-03-27 06:31:44.000004", "2015-03-28 06:29:28.000005", "2015-03-29 07:27:13.000006", "2015-03-30 07:24:57", "2015-03-31 07:22:42.000001", "2015-04-01 07:20:27.000002", "2015-04-02 07:18:13.000003", "2015-04-03 07:15:58.000004", "2015-04-04 07:13:44.000005", "2015-04-05 07:11:31.000006", "2015-04-06 07:09:17", "2015-04-07 07:07:04.000001", "2015-04-08 07:04:52.000002", "2015-04-09 07:02:40.000003", "2015-04-10 07:00:28.000004"]';

macroCallBack(frompythonjsonstring);

function macroCallBack (str) {
        obj = JSON.parse(str)

        for (var i=0; i<obj.length; i++) {
            console.log(obj[i]);
        }
}

您應該查看將字符串轉換為Javascript對象的JSON.stringify和JSON.parse javascript方法。 希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM