remote script文檔(轉(zhuǎn)載自微軟)(七)
更新時(shí)間:2007年03月03日 00:00:00 作者:
文檔: 檢查錯(cuò)誤
當(dāng)您在服務(wù)器腳本中用 remote scripting 調(diào)用方法時(shí),可能會(huì)遇到多種錯(cuò)誤,包括語(yǔ)法錯(cuò)誤和運(yùn)行時(shí)間錯(cuò)誤,以及調(diào)用 remote scripting 方法時(shí)的錯(cuò)誤。remote scripting 調(diào)用機(jī)制向您提供了獲知調(diào)用過(guò)程中所出現(xiàn)錯(cuò)誤信息的途徑。
錯(cuò)誤處理程序根據(jù)您是進(jìn)行同步或者異步調(diào)用稍微有些不一樣。如果您在進(jìn)行同步調(diào)用時(shí)導(dǎo)致錯(cuò)誤,那么 remote scripting 機(jī)制將在瀏覽器中顯示一條錯(cuò)誤消息。錯(cuò)誤文字來(lái)自于調(diào)用對(duì)象的 message 屬性。有關(guān)詳細(xì)信息,請(qǐng)參閱如下的“Remote Scripting 調(diào)用故障診斷”。
不過(guò),如果您產(chǎn)生導(dǎo)致一個(gè)錯(cuò)誤的異步調(diào)用,那么您可以通過(guò)指定一個(gè)錯(cuò)誤回調(diào)函數(shù)捕獲該錯(cuò)誤,該回調(diào)函數(shù)的調(diào)用在很大程度上和普通回調(diào)函數(shù)有相似之處。
捕獲異步調(diào)用中產(chǎn)生的錯(cuò)誤
您可以指定自己異步 remote scripting 調(diào)用中的錯(cuò)誤回調(diào)函數(shù)名。由于您必須傳遞該回調(diào)函數(shù)的函數(shù)指針,因此對(duì)于異步方法調(diào)用來(lái)說(shuō),您必須使用 javascript。如果您已經(jīng)創(chuàng)建了對(duì)服務(wù)器頁(yè)的對(duì)象引用,那么可以用第一個(gè)語(yǔ)法示例。否則可以用第二個(gè)語(yǔ)法示例。
callObject = ASPObject.methodName(p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
callobject = RSExecute(url, methodName, p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
有關(guān)產(chǎn)生對(duì)服務(wù)器方法異步調(diào)用的詳細(xì)信息,請(qǐng)參閱異步調(diào)用 Remote Scripting 方法。
不管您進(jìn)行同步還是異步調(diào)用,都可以得到關(guān)于錯(cuò)誤條件的信息,方法是測(cè)試調(diào)用對(duì)象的屬性。如果用戶指定了錯(cuò)誤回調(diào)函數(shù),那么調(diào)用對(duì)象就被作為參數(shù)傳遞,就象普通回調(diào)函數(shù)參數(shù)傳遞一樣。特別是下面的屬性提供了錯(cuò)誤信息:
status 如果遠(yuǎn)程調(diào)用失敗則包含 -1。
data 包含服務(wù)器返回的 XML 格式的粗信息。這是調(diào)試的最好信息源,因?yàn)樗隋e(cuò)誤消息的完整文本以及服務(wù)器生成的其他消息。
message 包含 remote scripting 代理過(guò)程生成的錯(cuò)誤消息信息(如果有的話)。message 中的錯(cuò)誤消息不必要和 data 屬性中的一樣。例如,如果 ASP 頁(yè)包含一條語(yǔ)法錯(cuò)誤,那么關(guān)于該錯(cuò)誤的詳細(xì)消息將出現(xiàn)在 data 屬性中,但消息屬性將只包含這樣一條消息──它指示用戶不能調(diào)用 ASP 頁(yè)上的方法。
下面的腳本示例了客戶腳本中的一個(gè)錯(cuò)誤回調(diào)函數(shù)。第一個(gè)腳本產(chǎn)生一個(gè) remote scripting 調(diào)用,并指明錯(cuò)誤回調(diào)函數(shù)。第二個(gè)腳本是錯(cuò)誤回調(diào)函數(shù)本身。錯(cuò)誤回調(diào)函數(shù)并不顯式地對(duì)調(diào)用對(duì)象 status 屬性值進(jìn)行測(cè)試,因?yàn)樵摵瘮?shù)僅在調(diào)用失敗時(shí)才被調(diào)用。
<SCRIPT LANGUAGE="javascript" for="btnSquare" event="onclick">
rsMath = RSGetASPObject("rsadd.asp");
number1 = txt1.value;
context = "squaring";
co = rsMath.square(number1,showResults,showErrors,context);
function showErrors(co){
// 轉(zhuǎn)儲(chǔ)粗?jǐn)?shù)據(jù)
msg = "The raw data returned by the remote method call is "
msg = msg + co.data
alert(msg);
// 顯示友好信息
msg = "The following error occurred during the "
msg = msg + co.context
msg = msg + " remote scripting call:\n"
msg = msg + co.message
alert(msg);
}
</SCRIPT>
Remote Scripting 調(diào)用故障診斷
找到某個(gè) remote scripting 調(diào)用中的確切錯(cuò)誤源并不總是一件容易的事情,因?yàn)?nbsp;remote scripting 不僅涉及到客戶而且涉及到服務(wù)器上的多個(gè)文件。不過(guò),某些類型的錯(cuò)誤屬于一般性錯(cuò)誤,而且容易發(fā)現(xiàn)。另外,用戶可以用 remote scripting 機(jī)制的錯(cuò)誤捕獲程序獲得調(diào)用過(guò)程中所出現(xiàn)錯(cuò)誤的詳細(xì)信息。
在某些情況下,用戶不能用 remote scripting 進(jìn)行任何處理,因?yàn)樯形磳?duì)之進(jìn)行正確的初始化。下表列出了典型的初始化錯(cuò)誤及其可能的出錯(cuò)緣由。
癥狀 可能錯(cuò)因
Remote scripting 不起作用;客戶頁(yè)源僅包含 <APPLET> 標(biāo)記。 RSEnableRemoteScripting
調(diào)用不在文檔主體內(nèi)。請(qǐng)參閱使得客戶頁(yè)內(nèi)的 Remote Scripting 有效。
Remote scripting 不起作用;所有調(diào)用失敗。 ASP 頁(yè)未被調(diào)用。使用 http:// 協(xié)議(而不是 file://)。
客戶端錯(cuò)誤消息,比如當(dāng)試圖調(diào)用 remote scripting 方法時(shí),出現(xiàn)“未定義 'MSRS' ”消息。 試圖進(jìn)行遠(yuǎn)程調(diào)用之前,未能成功調(diào)用 RSEnableRemoteScripting 方法。
客戶端錯(cuò)誤消息“對(duì)象不支持該屬性或者方法,”特別顯示出和 .HTM 文件不匹配的行號(hào)。 找不到代理對(duì)象 (Rsproxy.class),或者 RSEnableRemoteScripting 方法中傳遞的是無(wú)效 URL。
客戶端錯(cuò)誤消息“創(chuàng)建文件的 ASP 對(duì)象失敗”。 RSGetASPObject 調(diào)用中傳遞的是無(wú)效 URL。請(qǐng)參閱作為對(duì)象引用 ASP 頁(yè)。
如果錯(cuò)誤位于包含遠(yuǎn)程調(diào)用方法的 ASP 頁(yè)中,或者如果錯(cuò)誤出現(xiàn)在對(duì)某個(gè)遠(yuǎn)程方法的調(diào)用過(guò)程中,那么用戶可以在某個(gè)錯(cuò)誤回調(diào)函數(shù)中捕獲該錯(cuò)誤,而且用戶可以從調(diào)用對(duì)象的 data 和 message 屬性中獲得關(guān)于錯(cuò)誤的信息。
下表列出了用戶可以用錯(cuò)誤回調(diào)函數(shù)捕獲的典型問(wèn)題以及 message 和 data 屬性中的值。在多數(shù)情況下,message 屬性返回一般性信息,而 data 屬性則包含關(guān)于錯(cuò)誤的詳細(xì)信息。
注意 數(shù)據(jù)屬性包含一定數(shù)目的 XML 標(biāo)記以及和調(diào)用有關(guān)的其他信息。下表列出了出現(xiàn)在屬性值中的一個(gè)字符串。
問(wèn)題 消息值 數(shù)據(jù)值
RSExecute 方法中 ASP 頁(yè)的無(wú)效 URL。請(qǐng)參閱同步調(diào)用 Remote Scripting 方法和異步調(diào)用 Remote Scripting 方法 不同的,包括用戶試圖調(diào)用的頁(yè)名。 (null)
ASP 文件到 Rs.asp 的路徑錯(cuò)誤。請(qǐng)參閱使得服務(wù)器頁(yè)中的 Remote Scripting 有效。 “調(diào)用的頁(yè)不支持 remote scripting?!?nbsp;“未找到包括文件?!?nbsp;
ASP 文件中的語(yǔ)法或者運(yùn)行時(shí)間錯(cuò)誤。 “調(diào)用的頁(yè)不支持 remote scripting?!?nbsp;和錯(cuò)誤有關(guān)的細(xì)節(jié),包括行號(hào)。
試圖調(diào)用不存在的方法。 “不是公用函數(shù)?!?nbsp;“不是公用函數(shù)?!?nbsp;
ASP 構(gòu)造函數(shù)引用了未出現(xiàn)在 ASP 文件中的函數(shù)。請(qǐng)參閱使得服務(wù)器頁(yè)中的 Remote Scripting 有效 “調(diào)用的頁(yè)不支持 remote scripting?!?nbsp;“functionName未定義?!?
當(dāng)您在服務(wù)器腳本中用 remote scripting 調(diào)用方法時(shí),可能會(huì)遇到多種錯(cuò)誤,包括語(yǔ)法錯(cuò)誤和運(yùn)行時(shí)間錯(cuò)誤,以及調(diào)用 remote scripting 方法時(shí)的錯(cuò)誤。remote scripting 調(diào)用機(jī)制向您提供了獲知調(diào)用過(guò)程中所出現(xiàn)錯(cuò)誤信息的途徑。
錯(cuò)誤處理程序根據(jù)您是進(jìn)行同步或者異步調(diào)用稍微有些不一樣。如果您在進(jìn)行同步調(diào)用時(shí)導(dǎo)致錯(cuò)誤,那么 remote scripting 機(jī)制將在瀏覽器中顯示一條錯(cuò)誤消息。錯(cuò)誤文字來(lái)自于調(diào)用對(duì)象的 message 屬性。有關(guān)詳細(xì)信息,請(qǐng)參閱如下的“Remote Scripting 調(diào)用故障診斷”。
不過(guò),如果您產(chǎn)生導(dǎo)致一個(gè)錯(cuò)誤的異步調(diào)用,那么您可以通過(guò)指定一個(gè)錯(cuò)誤回調(diào)函數(shù)捕獲該錯(cuò)誤,該回調(diào)函數(shù)的調(diào)用在很大程度上和普通回調(diào)函數(shù)有相似之處。
捕獲異步調(diào)用中產(chǎn)生的錯(cuò)誤
您可以指定自己異步 remote scripting 調(diào)用中的錯(cuò)誤回調(diào)函數(shù)名。由于您必須傳遞該回調(diào)函數(shù)的函數(shù)指針,因此對(duì)于異步方法調(diào)用來(lái)說(shuō),您必須使用 javascript。如果您已經(jīng)創(chuàng)建了對(duì)服務(wù)器頁(yè)的對(duì)象引用,那么可以用第一個(gè)語(yǔ)法示例。否則可以用第二個(gè)語(yǔ)法示例。
callObject = ASPObject.methodName(p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
callobject = RSExecute(url, methodName, p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
有關(guān)產(chǎn)生對(duì)服務(wù)器方法異步調(diào)用的詳細(xì)信息,請(qǐng)參閱異步調(diào)用 Remote Scripting 方法。
不管您進(jìn)行同步還是異步調(diào)用,都可以得到關(guān)于錯(cuò)誤條件的信息,方法是測(cè)試調(diào)用對(duì)象的屬性。如果用戶指定了錯(cuò)誤回調(diào)函數(shù),那么調(diào)用對(duì)象就被作為參數(shù)傳遞,就象普通回調(diào)函數(shù)參數(shù)傳遞一樣。特別是下面的屬性提供了錯(cuò)誤信息:
status 如果遠(yuǎn)程調(diào)用失敗則包含 -1。
data 包含服務(wù)器返回的 XML 格式的粗信息。這是調(diào)試的最好信息源,因?yàn)樗隋e(cuò)誤消息的完整文本以及服務(wù)器生成的其他消息。
message 包含 remote scripting 代理過(guò)程生成的錯(cuò)誤消息信息(如果有的話)。message 中的錯(cuò)誤消息不必要和 data 屬性中的一樣。例如,如果 ASP 頁(yè)包含一條語(yǔ)法錯(cuò)誤,那么關(guān)于該錯(cuò)誤的詳細(xì)消息將出現(xiàn)在 data 屬性中,但消息屬性將只包含這樣一條消息──它指示用戶不能調(diào)用 ASP 頁(yè)上的方法。
下面的腳本示例了客戶腳本中的一個(gè)錯(cuò)誤回調(diào)函數(shù)。第一個(gè)腳本產(chǎn)生一個(gè) remote scripting 調(diào)用,并指明錯(cuò)誤回調(diào)函數(shù)。第二個(gè)腳本是錯(cuò)誤回調(diào)函數(shù)本身。錯(cuò)誤回調(diào)函數(shù)并不顯式地對(duì)調(diào)用對(duì)象 status 屬性值進(jìn)行測(cè)試,因?yàn)樵摵瘮?shù)僅在調(diào)用失敗時(shí)才被調(diào)用。
<SCRIPT LANGUAGE="javascript" for="btnSquare" event="onclick">
rsMath = RSGetASPObject("rsadd.asp");
number1 = txt1.value;
context = "squaring";
co = rsMath.square(number1,showResults,showErrors,context);
function showErrors(co){
// 轉(zhuǎn)儲(chǔ)粗?jǐn)?shù)據(jù)
msg = "The raw data returned by the remote method call is "
msg = msg + co.data
alert(msg);
// 顯示友好信息
msg = "The following error occurred during the "
msg = msg + co.context
msg = msg + " remote scripting call:\n"
msg = msg + co.message
alert(msg);
}
</SCRIPT>
Remote Scripting 調(diào)用故障診斷
找到某個(gè) remote scripting 調(diào)用中的確切錯(cuò)誤源并不總是一件容易的事情,因?yàn)?nbsp;remote scripting 不僅涉及到客戶而且涉及到服務(wù)器上的多個(gè)文件。不過(guò),某些類型的錯(cuò)誤屬于一般性錯(cuò)誤,而且容易發(fā)現(xiàn)。另外,用戶可以用 remote scripting 機(jī)制的錯(cuò)誤捕獲程序獲得調(diào)用過(guò)程中所出現(xiàn)錯(cuò)誤的詳細(xì)信息。
在某些情況下,用戶不能用 remote scripting 進(jìn)行任何處理,因?yàn)樯形磳?duì)之進(jìn)行正確的初始化。下表列出了典型的初始化錯(cuò)誤及其可能的出錯(cuò)緣由。
癥狀 可能錯(cuò)因
Remote scripting 不起作用;客戶頁(yè)源僅包含 <APPLET> 標(biāo)記。 RSEnableRemoteScripting
調(diào)用不在文檔主體內(nèi)。請(qǐng)參閱使得客戶頁(yè)內(nèi)的 Remote Scripting 有效。
Remote scripting 不起作用;所有調(diào)用失敗。 ASP 頁(yè)未被調(diào)用。使用 http:// 協(xié)議(而不是 file://)。
客戶端錯(cuò)誤消息,比如當(dāng)試圖調(diào)用 remote scripting 方法時(shí),出現(xiàn)“未定義 'MSRS' ”消息。 試圖進(jìn)行遠(yuǎn)程調(diào)用之前,未能成功調(diào)用 RSEnableRemoteScripting 方法。
客戶端錯(cuò)誤消息“對(duì)象不支持該屬性或者方法,”特別顯示出和 .HTM 文件不匹配的行號(hào)。 找不到代理對(duì)象 (Rsproxy.class),或者 RSEnableRemoteScripting 方法中傳遞的是無(wú)效 URL。
客戶端錯(cuò)誤消息“創(chuàng)建文件的 ASP 對(duì)象失敗”。 RSGetASPObject 調(diào)用中傳遞的是無(wú)效 URL。請(qǐng)參閱作為對(duì)象引用 ASP 頁(yè)。
如果錯(cuò)誤位于包含遠(yuǎn)程調(diào)用方法的 ASP 頁(yè)中,或者如果錯(cuò)誤出現(xiàn)在對(duì)某個(gè)遠(yuǎn)程方法的調(diào)用過(guò)程中,那么用戶可以在某個(gè)錯(cuò)誤回調(diào)函數(shù)中捕獲該錯(cuò)誤,而且用戶可以從調(diào)用對(duì)象的 data 和 message 屬性中獲得關(guān)于錯(cuò)誤的信息。
下表列出了用戶可以用錯(cuò)誤回調(diào)函數(shù)捕獲的典型問(wèn)題以及 message 和 data 屬性中的值。在多數(shù)情況下,message 屬性返回一般性信息,而 data 屬性則包含關(guān)于錯(cuò)誤的詳細(xì)信息。
注意 數(shù)據(jù)屬性包含一定數(shù)目的 XML 標(biāo)記以及和調(diào)用有關(guān)的其他信息。下表列出了出現(xiàn)在屬性值中的一個(gè)字符串。
問(wèn)題 消息值 數(shù)據(jù)值
RSExecute 方法中 ASP 頁(yè)的無(wú)效 URL。請(qǐng)參閱同步調(diào)用 Remote Scripting 方法和異步調(diào)用 Remote Scripting 方法 不同的,包括用戶試圖調(diào)用的頁(yè)名。 (null)
ASP 文件到 Rs.asp 的路徑錯(cuò)誤。請(qǐng)參閱使得服務(wù)器頁(yè)中的 Remote Scripting 有效。 “調(diào)用的頁(yè)不支持 remote scripting?!?nbsp;“未找到包括文件?!?nbsp;
ASP 文件中的語(yǔ)法或者運(yùn)行時(shí)間錯(cuò)誤。 “調(diào)用的頁(yè)不支持 remote scripting?!?nbsp;和錯(cuò)誤有關(guān)的細(xì)節(jié),包括行號(hào)。
試圖調(diào)用不存在的方法。 “不是公用函數(shù)?!?nbsp;“不是公用函數(shù)?!?nbsp;
ASP 構(gòu)造函數(shù)引用了未出現(xiàn)在 ASP 文件中的函數(shù)。請(qǐng)參閱使得服務(wù)器頁(yè)中的 Remote Scripting 有效 “調(diào)用的頁(yè)不支持 remote scripting?!?nbsp;“functionName未定義?!?
相關(guān)文章
remote script文檔(轉(zhuǎn)載自微軟)(八)
remote script文檔(轉(zhuǎn)載自微軟)(八)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(四)
remote script文檔(轉(zhuǎn)載自微軟)(四)...2007-03-03remote script文檔[轉(zhuǎn)載自微軟](méi)(二)
remote script文檔[轉(zhuǎn)載自微軟](méi)(二)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(七)
remote script文檔(轉(zhuǎn)載自微軟)(七)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(一)
remote script文檔(轉(zhuǎn)載自微軟)(一)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(九)
remote script文檔(轉(zhuǎn)載自微軟)(九)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(五)
這篇文章主要介紹了remote script文檔的相關(guān)資料,需要的朋友可以參考下2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(六)
remote script文檔(轉(zhuǎn)載自微軟)(六)...2007-03-03不錯(cuò)的remote script文檔(轉(zhuǎn)載自微軟)(三)
不錯(cuò)的remote script文檔(轉(zhuǎn)載自微軟)(三)...2007-03-03