2014-06-17 173 views
0

我正在嘗試將Perl代碼與JavaScript集成,並遇到了一個問題,我只是想查看我存儲在Perl中的數組的輸出。下面的代碼給了我存儲的數組中正確的元素,但我無法看到JavaScript中的元素。將Perl數組分配給Javascript變量

my @list_of_vendors; 
while(!$resultSet->EOF) { 
push @list_of_vendors, $resultSet->Fields("vendor")->Value; 
    $resultSet->MoveNext; 
} 

print "The First Vendor is: " . $list_of_vendors[0]. "\n"; 

此打印出The First vendor is: 3D Systems下面的代碼似乎並沒有給我我想要的結果...

print <<ONE; 
<html> 
<body> 
<h4> Test Vendor Array Javascript </h4> 

<p id="demo"</p> 

<script type="text/javascript" language="JavaScript"> 
var myVendorArray = @list_of_vendors; 
document.write('<p> $list_of_vendors[0] is the same as myVendorArray[0] </p>'); 

</script> 
</body> 
</html> 
ONE 

我認爲這會給我3D Systems is the same as 3D Systems,但它給出了一個空白的HTML屏幕。

任何人都可以指出我可能做錯了什麼?或者指出我正確的方向來使用記事本++或其他一些有用的IDE進行調試。感謝一堆!

+0

「不工作」= ??? – AKHolland

+0

抱歉,不一定不起作用,但不會給我結果,我認爲它應該給...我想看到'3D系統與HTML網頁上的'3D系統'相同......但由於某種原因這是不顯示... – koala421

+2

你有沒有嘗試做一個「查看源代碼」來查看實際生成的HTML?我認爲這個問題會非常明顯。 。 。 – ruakh

回答

3

代碼的heredoc中的所有內容都是用Perl插入的,但是被客戶端解釋爲JavaScript。所以,如果你寫

@list_of_vendors = ("Alice","Bob","Charlie"); 
... 
print <<EOF; 
... 
<script> 
var list_of_vendors = @list_of_vendors; 
... 
EOF 

什麼客戶端將看到的是類似

var list_of_vendors = Alice Bob Charlie; 

Perl有非常好的設施,將Perl數據結構到JSON符號,這是很容易通過JavaScript的理解,所以你應該這樣做:

在這種情況下
use JSON; 
$list_of_vendors_json = encode_json(\@list_of_vendors); 
... 
var list_of_vendors = $list_of_vendors_json; 
... 

瀏覽器將看到:

var list_of_vendors = ["Alice","Bob","Charlie"]; 

和您的其他代碼將按預期工作。

+0

我必須爲這兩項工作下載JSON,或者這是一個功能在perl中可以做或有一些類型的附加組件,爲此? – koala421

+1

用'cpan'安裝'JSON'模塊。 – mob

+0

It works!...謝謝一堆 – koala421