Remote Scripting進(jìn)階圖文說(shuō)明教程---檢查出錯(cuò)
發(fā)表時(shí)間:2024-01-13 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]當(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)行同步或者異...
當(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ì)象的屬性。如果用戶(hù)指定了錯(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 屬性中,但消息屬性將只包含這樣一條消息──它指示用戶(hù)不能調(diào)用 ASP 頁(yè)上的方法。
下面的腳本示例了客戶(hù)腳本中的一個(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)?remote scripting 不僅涉及到客戶(hù)而且涉及到服務(wù)器上的多個(gè)文件。不過(guò),某些類(lèi)型的錯(cuò)誤屬于一般性錯(cuò)誤,而且容易發(fā)現(xiàn)。另外,用戶(hù)可以用 remote scripting 機(jī)制的錯(cuò)誤捕獲程序獲得調(diào)用過(guò)程中所出現(xiàn)錯(cuò)誤的詳細(xì)信息。
在某些情況下,用戶(hù)不能用 remote scripting 進(jìn)行任何處理,因?yàn)樯形磳?duì)之進(jìn)行正確的初始化。下表列出了典型的初始化錯(cuò)誤及其可能的出錯(cuò)緣由。
癥狀 可能錯(cuò)因
Remote scripting 不起作用;客戶(hù)頁(yè)源僅包含 <APPLET> 標(biāo)記。 RSEnableRemoteScripting 調(diào)用不在文檔主體內(nèi)。請(qǐng)參閱使得客戶(hù)頁(yè)內(nèi)的 Remote Scripting 有效。
Remote scripting 不起作用;所有調(diào)用失敗。 ASP 頁(yè)未被調(diào)用。使用http://協(xié)議(而不是file://)。
客戶(hù)端錯(cuò)誤消息,比如當(dāng)試圖調(diào)用 remote scripting 方法時(shí),出現(xiàn)“未定義 'MSRS' ”消息。 試圖進(jìn)行遠(yuǎn)程調(diào)用之前,未能成功調(diào)用 RSEnableRemoteScripting 方法。
客戶(hù)端錯(cuò)誤消息“對(duì)象不支持該屬性或者方法,”特別顯示出和 .HTM 文件不匹配的行號(hào)。 找不到代理對(duì)象 (Rsproxy.class),或者RSEnableRemoteScripting方法中傳遞的是無(wú)效 URL。
客戶(hù)端錯(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ò)程中,那么用戶(hù)可以在某個(gè)錯(cuò)誤回調(diào)函數(shù)中捕獲該錯(cuò)誤,而且用戶(hù)可以從調(diào)用對(duì)象的 data 和 message 屬性中獲得關(guān)于錯(cuò)誤的信息。
下表列出了用戶(hù)可以用錯(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 方法 不同的,包括用戶(hù)試圖調(diào)用的頁(yè)名。 (null)
ASP 文件到 Rs.asp 的路徑錯(cuò)誤。請(qǐng)參閱使得服務(wù)器頁(yè)中的 Remote Scripting 有效。 “調(diào)用的頁(yè)不支持 remote scripting! “未找到包括文件!
ASP 文件中的語(yǔ)法或者運(yùn)行時(shí)間錯(cuò)誤。 “調(diào)用的頁(yè)不支持 remote scripting。” 和錯(cuò)誤有關(guān)的細(xì)節(jié),包括行號(hào)。
試圖調(diào)用不存在的方法。 “不是公用函數(shù)! “不是公用函數(shù)!
ASP 構(gòu)造函數(shù)引用了未出現(xiàn)在 ASP 文件中的函數(shù)。請(qǐng)參閱使得服務(wù)器頁(yè)中的 Remote Scripting 有效 “調(diào)用的頁(yè)不支持 remote scripting! “functionName未定義!