例如以下代碼:
程序代碼:
複製代碼代碼如下:
<%@LANGUAGE="JScript"CODEPAGE="65001"%>
<scriptlanguage="JScript"runat="server">
Response.Cookies("xujiwei")("name")="xujiwei";
Response.Cookies("xujiwei")("gender")="male";
varexpiredDate=newDate(2008,11,31);
Response.Cookies("xujiwei").Expires=expiredDate;
</script>
在瀏覽器中打開之後,就會出現以下錯誤:
引用內容:
MicrosoftJScript運行時錯誤錯誤''800a000d''
類型不匹配
/temp/test.asp,行6
這就意味著,我們按照類似在VBScript裡的使用日期類型數據的方法在JScript不再行得通,但是我們總是需要在服務端中使用日期類型數據的,如果操作數據庫是採用參數化Command的方式的話,那麼需要使用日期類型數據的地方會更多,總不能因為不能使用常規方法來添加一個日期參數而把它放在SQL語句裡吧。
幸好,JScript的設計者們考慮到了這一點。 JScript在服務端使用時,往往是做為ASP的另一種腳本語言,而JScript則是微軟在JavaScript上發展而來的微軟自己的東西,考慮到這一點也是應該的。
在JScript中,解決這一問題的關鍵就是,Date類型的對象提供了一個函數getVarDate,它在JScript語言參考的說明如下:
引用內容:
當與COM對象、ActiveX®對像或其他以VT_DATE格式接受和返回日期值的對象(例如VisualBasic和VBScript)進行交互時,使用getVarDate方法。實際格式取決於地區設置,不隨JScript變化。
好了,到現在問題的解決方法也已經浮出水面,就是使用getVarDate()函數將Date類型對象轉換成可以與ASP中內置對象Response等可以交互的日期類型對象,那麼將一開始的代碼修改如下:
程序代碼:
複製代碼代碼如下:
<%@LANGUAGE="JScript"CODEPAGE="65001"%>
<scriptlanguage="JScript"runat="server">
Response.Cookies("xujiwei")("name")="xujiwei";
Response.Cookies("xujiwei")("gender")="male";
varexpiredDate=newDate(2008,11,31);
Response.Cookies("xujiwei").Expires=expiredDate.getVarDate();
</script>
再在瀏覽器打開這個測試頁面的時候,就不再會有錯誤信息出現,說明客戶端的Cookies成功寫入並設置了到期時間為2008年12月31日。
希望此文對你有所幫助。