0

私は、従来のASP Webサイトでスクリプト言語として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

私は私の問題を見てきました他のWebページでも使用できます。たぶん私はいくつかの設定が欠けているでしょう。 – Gouthamm4G

答えて

0

あなたはクッキーが設定されているかどうかをチェックしている場合、あなたはクッキーを読み、それが本当にセット5分で期限切れになったかどうかを確認する必要があります。

.Expires設定がyyyy-MM-dd H:mフォーマットとしてフォーマットされた日付を期待しているようだ。(私はこれはそれが受け入れONLYフォーマットであれば、あなたはさまざまなバリエーションを試みることができることを確認していない)

<%@ 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"); 

それがnullまたは空の文字列であってもよいが、未定義な​​い場合があります。だから、代わりにそのようなチェックを実行してください:

これは、機能が実行されるときだけ、長さをチェックします。


第二に、クッキーインスタンスの.Expiresプロパティは、とにかくない文字列を日付を取得する必要があります。ただ、.toString()呼び出しを削除し、それが動作するはずです:

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

初めて試してみましたが動作しませんでした。私は 'toDateString()'と 'toUTCString()'でフォーマットしようとしましたが、どちらも動作しませんでした。 – Gouthamm4G