解決 JScript 中使用日期類型數(shù)據(jù)時(shí)出現(xiàn)類型錯(cuò)誤的問題
更新時(shí)間:2008年05月18日 21:21:25 作者:
在服務(wù)端JScript中,有些時(shí)候需要使用日期類型的數(shù)據(jù),比如說設(shè)置一個(gè)cookie的到期時(shí)間,更新數(shù)據(jù)庫中的日期字段等。但是按照平常的方法來用js里的date類型數(shù)據(jù)時(shí),運(yùn)行時(shí)就會發(fā)生錯(cuò)誤。
例如以下代碼:
程序代碼:
<%@LANGUAGE="JScript" CODEPAGE="65001"%>
<script language="JScript" runat="server">
Response.Cookies("xujiwei")("name") = "xujiwei";
Response.Cookies("xujiwei")("gender") = "male";
var expiredDate = new Date(2008, 11, 31);
Response.Cookies("xujiwei").Expires = expiredDate;
</script>
在瀏覽器中打開之后,就會出現(xiàn)以下錯(cuò)誤:
引用內(nèi)容:
Microsoft JScript 運(yùn)行時(shí)錯(cuò)誤 錯(cuò)誤 ''800a000d''
類型不匹配
/temp/test.asp,行 6
這就意味著,我們按照類似在VBScript里的使用日期類型數(shù)據(jù)的方法在JScript不再行得通,但是我們總是需要在服務(wù)端中使用日期類型數(shù)據(jù)的,如果操作數(shù)據(jù)庫是采用參數(shù)化Command的方式的話,那么需要使用日期類型數(shù)據(jù)的地方會更多,總不能因?yàn)椴荒苁褂贸R?guī)方法來添加一個(gè)日期參數(shù)而把它放在SQL語句里吧。
幸好,JScript的設(shè)計(jì)者們考慮到了這一點(diǎn)。JScript在服務(wù)端使用時(shí),往往是做為ASP的另一種腳本語言,而JScript則是微軟在JavaScript上發(fā)展而來的微軟自己的東西,考慮到這一點(diǎn)也是應(yīng)該的。
在JScript中,解決這一問題的關(guān)鍵就是,Date類型的對象提供了一個(gè)函數(shù)getVarDate,它在JScript語言參考的說明如下:
引用內(nèi)容:
當(dāng)與 COM 對象、ActiveX® 對象或其他以 VT_DATE 格式接受和返回日期值的對象(例如 Visual Basic 和 VBScript)進(jìn)行交互時(shí),使用 getVarDate 方法。實(shí)際格式取決于地區(qū)設(shè)置,不隨 JScript 變化。
好了,到現(xiàn)在問題的解決方法也已經(jīng)浮出水面,就是使用getVarDate()函數(shù)將Date類型對象轉(zhuǎn)換成可以與ASP中內(nèi)置對象Response等可以交互的日期類型對象,那么將一開始的代碼修改如下:
程序代碼:
<%@LANGUAGE="JScript" CODEPAGE="65001"%>
<script language="JScript" runat="server">
Response.Cookies("xujiwei")("name") = "xujiwei";
Response.Cookies("xujiwei")("gender") = "male";
var expiredDate = new Date(2008, 11, 31);
Response.Cookies("xujiwei").Expires = expiredDate.getVarDate();
</script>
再在瀏覽器打開這個(gè)測試頁面的時(shí)候,就不再會有錯(cuò)誤信息出現(xiàn),說明客戶端的Cookies成功寫入并設(shè)置了到期時(shí)間為2008年12月31日。
希望此文對你有所幫助。
程序代碼:
復(fù)制代碼 代碼如下:
<%@LANGUAGE="JScript" CODEPAGE="65001"%>
<script language="JScript" runat="server">
Response.Cookies("xujiwei")("name") = "xujiwei";
Response.Cookies("xujiwei")("gender") = "male";
var expiredDate = new Date(2008, 11, 31);
Response.Cookies("xujiwei").Expires = expiredDate;
</script>
在瀏覽器中打開之后,就會出現(xiàn)以下錯(cuò)誤:
引用內(nèi)容:
Microsoft JScript 運(yùn)行時(shí)錯(cuò)誤 錯(cuò)誤 ''800a000d''
類型不匹配
/temp/test.asp,行 6
這就意味著,我們按照類似在VBScript里的使用日期類型數(shù)據(jù)的方法在JScript不再行得通,但是我們總是需要在服務(wù)端中使用日期類型數(shù)據(jù)的,如果操作數(shù)據(jù)庫是采用參數(shù)化Command的方式的話,那么需要使用日期類型數(shù)據(jù)的地方會更多,總不能因?yàn)椴荒苁褂贸R?guī)方法來添加一個(gè)日期參數(shù)而把它放在SQL語句里吧。
幸好,JScript的設(shè)計(jì)者們考慮到了這一點(diǎn)。JScript在服務(wù)端使用時(shí),往往是做為ASP的另一種腳本語言,而JScript則是微軟在JavaScript上發(fā)展而來的微軟自己的東西,考慮到這一點(diǎn)也是應(yīng)該的。
在JScript中,解決這一問題的關(guān)鍵就是,Date類型的對象提供了一個(gè)函數(shù)getVarDate,它在JScript語言參考的說明如下:
引用內(nèi)容:
當(dāng)與 COM 對象、ActiveX® 對象或其他以 VT_DATE 格式接受和返回日期值的對象(例如 Visual Basic 和 VBScript)進(jìn)行交互時(shí),使用 getVarDate 方法。實(shí)際格式取決于地區(qū)設(shè)置,不隨 JScript 變化。
好了,到現(xiàn)在問題的解決方法也已經(jīng)浮出水面,就是使用getVarDate()函數(shù)將Date類型對象轉(zhuǎn)換成可以與ASP中內(nèi)置對象Response等可以交互的日期類型對象,那么將一開始的代碼修改如下:
程序代碼:
復(fù)制代碼 代碼如下:
<%@LANGUAGE="JScript" CODEPAGE="65001"%>
<script language="JScript" runat="server">
Response.Cookies("xujiwei")("name") = "xujiwei";
Response.Cookies("xujiwei")("gender") = "male";
var expiredDate = new Date(2008, 11, 31);
Response.Cookies("xujiwei").Expires = expiredDate.getVarDate();
</script>
再在瀏覽器打開這個(gè)測試頁面的時(shí)候,就不再會有錯(cuò)誤信息出現(xiàn),說明客戶端的Cookies成功寫入并設(shè)置了到期時(shí)間為2008年12月31日。
希望此文對你有所幫助。
相關(guān)文章
JScript中調(diào)用ActiveX獲取訪客網(wǎng)卡MAC地址實(shí)現(xiàn)代碼
這篇文章主要介紹了JScript中調(diào)用ActiveX獲取訪客網(wǎng)卡MAC地址實(shí)現(xiàn)代碼,注意本文代碼只適應(yīng)運(yùn)行在IE瀏覽器上,需要的朋友可以參考下2014-08-08
asp javascript picasa相冊外鏈批量導(dǎo)出
自己的空間想做一個(gè)相冊,找來找去用了picasa,功能很方便,唯一不足之處是獲取外鏈太麻煩,一個(gè)一個(gè)的復(fù)制粘貼太辛苦,于是用asp+javascript的方法寫了個(gè)簡單的程序2009-05-05
Microsoft JET Database Engine(0x80004005)未指定錯(cuò)誤的解決方法
今天在配置iis asp運(yùn)行環(huán)境的時(shí)候提示Microsoft JET Database Engine(0x80004005)未指定錯(cuò)誤,不過最后通過如下方法解決了,這里腳本之家小編特為大家分享下,方便需要的朋友2014-06-06
asp有效防止網(wǎng)站留言板出現(xiàn)垃圾留言/評論實(shí)現(xiàn)思路
如何有效防止網(wǎng)站(留言板)出現(xiàn)垃圾留言,垃圾評論?本文提供詳細(xì)解決思路與實(shí)現(xiàn)步驟,需要了解的朋友可以參考下2012-12-12
ASP中巧用Split()函數(shù)生成SQL查詢語句的實(shí)例
有時(shí)候我們需要根據(jù)參數(shù)來實(shí)現(xiàn)多種條件查詢,這里就是通過split函數(shù)將參數(shù)分割為多個(gè)2014-04-04
asp正則替換鏈接實(shí)現(xiàn)偽靜態(tài)效果
有時(shí)候我們需要將頁面中的動態(tài)頁面替換為我們偽靜態(tài)的格式,一般是頁面內(nèi)容中批量替換2013-08-08
asp在iis7報(bào)錯(cuò)行號不準(zhǔn)問題的解決方法
這篇文章主要介紹了asp在iis7報(bào)錯(cuò)行號不準(zhǔn)問題的解決方法,需要的朋友可以參考下2020-08-08

