2012-06-01 33 views
0

我想知道如果Eval()是我真正用於在服務器上調用腳本並在這些文件上執行JavaScript的唯一選項。Eval是我唯一的選擇嗎?

我看到每個關於Eval的安全問題的地方,人們不推薦它 - 那麼有沒有任何安全的方式來請求JavaScript文件並執行該JS?

+0

你爲什麼叫服務器端的腳本? – Bergi

+0

我爲什麼要從別人的服務器調用與我的網站無關的腳本? :S – Sir

+0

我不知道,那就是爲什麼我問。我讀到你是「在你的服務器上調用腳本來執行它們」。那麼你想實現什麼? – Bergi

回答

0

不,你不必評估,但如果你相信這樣做的投入是沒問題的。只傳輸數據而不運行代碼更好。

您可以動態創建一個腳本標籤:

var script = document.createElement('script'); 
script.src = 'path/to/javascript/to/run'; 
document.body.appendChild(script); 
+0

如果這也有HTML輸出?沒有任何投入只是一個電話。如果我可以讓它執行腳本,它可以使用我的主JS腳本中設置的數組。 – Sir

+0

@Dave呼叫被輸入。爲此,從服務器返回的HTML也是如此。如果它有HTML,那麼eval也不起作用。您可能想要返回一個包含HTML和JavaScript的json對象,然後評估javascript部分,或者您甚至不需要再評估它,因爲您可以返回要通過JSON執行的函數。 – Paulpro

+0

以及我調用腳本加載表的佈局,但在該表中,我還需要循環一些JS數組列表中的數據行。我不能發送數組,因爲JS不會執行它只是加載HTML。 = /你明白我的意思了嗎? – Sir

0

我這樣做廣泛的asp.net mcv3 web應用程序dynamicaly在腳本局部視圖負荷,使用jQuery.load()

0

只是文檔編寫一個腳本包括到該頁面。然後客戶端的瀏覽器會爲你做,而你幾乎可以忽略它的安全方面。