2011-06-15 62 views
6

是否可以將<% ... %>標籤嵌入到JavaScript文件中並讓它呈現相應的服務器端代碼?如何才能做到這一點?在.js文件中使用ASP.Net標記?

+1

根據SO,你們都同時回答。 – Amy 2011-06-15 21:31:42

回答

13

的過程實際上是倒退從你在想什麼。

您創建了呈現爲JavaScript文件的* .aspx頁面。然後,您可以參考在<script>標記,* .aspx頁面中:

<script type="text/javascript" src="someJavaScript.aspx"></script> 
+0

.aspx文件的外觀如何?我幾乎可以得到這個工作,但第二個.aspx文件似乎無法引用第一個。 – 2016-09-22 16:42:04

6

是的,這是可能的,但它不會是一個JS文件,它將是一個帶Javascript的aspx文件而不是html。

在您的網頁,以refrence它,你會怎麼做:

<script type="text/javascript" src="myPage.aspx"></script> 
1

是的,這可以通過簡單地使一個普通網頁,其中包含的JavaScript來代替。

但是,它可能不像您預期​​的那樣。 JavaScript文件緩存的時間比頁面長。由於瀏覽器可能不會每次從服務器請求文件,因此每次使用文件時都不會執行該文件。

+0

有很多方法可以讓瀏覽器抓住它的每個請求 – 2011-06-15 20:39:23

+0

防止緩存可能是一個頭痛的問題。有標題可以添加工作*大部分時間http://stackoverflow.com/q/49547/866236,但我發現一些瀏覽器仍然緩存文件。使用時間戳添加get參數似乎更可靠:。 – Dan 2014-05-12 21:40:29

1

我打算對你正在努力完成的事情做一些假設。很可能你有一個JavaScript文件需要訪問服務器上的一些信息。比方說,你需要一些東西從會話,如果它是一個ASPX頁面你會讓它看起來像

<script type="text/javascript"> 
var username = '<%= Session["username"] %>'; 
var account_num = '<%= Session["account_num"] %>'; 
</script> 

顯然這不會在.js文件中工作,因爲它從來沒有經歷頁面的生命週期一個aspx頁面將被處理。但是,您不需要像其他人可能提示的那樣將整個.js文件轉換爲.aspx頁面。還有很多其他方法可以將這些數據展示給您的js代碼。我將列出2

  1. 發出上述<script>在你的頁面響應(可能使用<asp:ContentPlaceHolder />
  2. 創建一個Web服務(甚至可以是一個簡單ashx的),返回var username = ...甚至更​​好的回報JSON