0

我正在嘗試在經典ASP網站中使用JavaScript作爲腳本語言。 我遇到了幾個錯誤。許多JS對象不會工作,也有一些常量。有人可以解釋使用JavaScript作爲服務器端腳本語言的含義嗎?這是我第一次嘗試使用基於JavaScript的asp網站,所以我提供了這些代碼。ASP中的服務器端JS影響

<% 
var user = Request.QueryString("name"); 
Response.Cookies("thisUser") = user; 

var expdate = new Date(Date.now().setMinutes(Date.now().getMinutes()+5)); 
Response.Cookies("thisUser").Expires = expdate.toString(); 

function _greet(name) { 
    Response.Write("<p>And also you... <b>" + name + "</b> ...I guess...</p>"); 
} 

%> 
<!doctype html> 
<html> 
<head><title>ASP</title></head> 
<body> 
<% 
Response.Write("<p>Hello World!</p>"); 
if (user != undefined) { 
    _greet(user); 
} 
%> 
</body> 
</html> 

_greet()不管是否user未定義始終運行。 expdate.toString()由於未返回日期類型的字符串而導致內部服務器錯誤。它只是返回數字,並且不支持toDateString()!有什麼辦法可以在ASP中調試JavaScript嗎?

P.S.我已經在服務器管理器(IIS 8.5)中將默認語言設置爲JavaScript。此外,我只是作爲內部網站進行測試。

+0

我已經看到了我的問題在其他網頁上工作。也許我錯過了一些配置。 – Gouthamm4G

回答

0

如果要檢查,看是否該cookie被設置,你必須讀取cookie並檢查它是否真的是在5分鐘的路程到期。

.Expires設置似乎期望格式化爲yyyy-MM-dd H:m格式的日期。(我不知道這是不是接受,你可以嘗試不同的變化的唯一格式)

<%@ Language= "JavaScript" %> 
<% 

var user = Request.QueryString("name"); 

//set the cookie only if it is not undefined 
if(user+"" != "undefined") 
{ 
    //write the name to cookie 
    Response.Cookies("thisUser") = user; 

    var fiveMinutesLater = new Date(); 
    fiveMinutesLater.setMinutes(fiveMinutesLater.getMinutes() + 5); 

    //Response.Cookies("thisUser").Expires seems to expect the date in yyyy-MM-dd H:m format 
    var formatteddate= fiveMinutesLater.getFullYear()+ "-" +("0" + (fiveMinutesLater.getMonth()+ 1)).slice(-2)+ "-" + ("0" + fiveMinutesLater.getDate()).slice(-2)+ " " + ("0" + fiveMinutesLater.getHours()).slice(-2)+":"+("0" + fiveMinutesLater.getMinutes()).slice(-2) 

    Response.Cookies("thisUser").Expires = formatteddate; 
} 


function _greet(name) { 
    Response.Write("<p>And also you... <b>" + name + "</b> ...I guess...</p>"); 
} 
%> 
<!doctype html> 
<html> 
<head><title>ASP</title></head> 
<body> 
<% 
Response.Write("<p>Hello World!</p>"); 

//Read the cookie. 
var thisUser = Request.Cookies("thisUser"); 

if (thisUser != "") { 
    _greet(thisUser); 
} 
%> 
</body> 
</html> 
+0

爲什麼'undefined'無法識別? – Gouthamm4G

+0

另外,當我在瀏覽器控制檯上查看失效日期時,它在GMT。這是正常的嗎?但它是腳本中的系統區域時間。 – Gouthamm4G

0

首先,可變user將永遠不會在你的if塊是不確定的,因爲你在這裏定義它:

var user = Request.QueryString("name"); 

它可能爲空或空字符串,而不是不確定的。所以只需執行這樣的檢查,而不是:

if ((user + "").length > 0) { 
    _greet(user); 
} 

這將檢查長度,並且只有當有東西在那裏執行該功能。


其次,一個Cookie實例的.Expires財產應該得到的日期,無論如何,不​​是一個字符串。只是刪除.toString()調用,它應該工作:

Response.Cookies("thisUser").Expires = expdate; 
+0

我第一次嘗試它,但沒有奏效。我也嘗試過使用'toDateString()'和'toUTCString()'進行格式化,但這些都不起作用。 – Gouthamm4G