環(huán)境:JavaScript 作為腳本語(yǔ)言的 ASP,也可擴展到客戶(hù)端的 JavaScript。
以下函數為自定義組件 bluec.bluecData2 的代碼:
function execSql(pSql, params)
{
var result = -3;
formDoc = "<sqls>\n" +
"<sql>" + pSql + "</sql>\n" +
"</sqls>";
var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
oXmlHttp.Open("POST", "../util/execsql.asp", false);
oXmlHttp.setRequestHeader("Content-Type", "text/xml");
oXmlHttp.setRequestHeader("charset", "utf-8");
oXmlHttp.Send(formDoc);
if (oXmlHttp.status == 200)
{
var rText = oXmlHttp.responseText;
if (rText.substring(0,1) == "0")
{
return true;
}
else
{
return false;
}
}
return false;
}
調用 bluec.bluecData2 組件的頁(yè)面內容:
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<%
var errMsg = "0";
obj = new ActiveXObject("bluec.bluecData2");
errMsg = obj.execSql(Request);
Response.Charset = "utf-8";
Response.ContentType = "text/xml";
Response.Write(errMsg);
obj = null;
%>
當errMsg包含中文時(shí),oXmlHttp.responseText 返回的值是亂碼,怪了,在 jsp 中同樣的實(shí)現方法居然沒(méi)有問(wèn)題。在網(wǎng)上搜索,發(fā)現解決最重要的解決辦法是寫(xiě)一個(gè)函數來(lái)轉換 oXmlHttp.responseText 的編碼格式。該 VBScript 函數是 byte2sBSTR,但是我的代碼全部是 JavaScript,據說(shuō) JavaScript 也可以直接調用 VBScript 函數,心里好不舒服,這些小問(wèn)題好花時(shí)間。繼續搜索吧,看有沒(méi)有純 JavaScript 的解決辦法,在一個(gè)論壇上發(fā)現一個(gè)高手對此問(wèn)題的回復:
unescape
真是簡(jiǎn)單之至,點(diǎn)到為止。unescape 有什么用,通過(guò)實(shí)驗:
var rText = oXmlHttp.responseText; 改成 var rText = unescape(oXmlHttp.responseText);
且
Response.Write(errMsg); 改成 Response.Write(escape(errMsg));
居然OK了,太棒了。
聯(lián)系客服