Asp-Classic

VBScript / Classic ASP - 如何檢查對像中是否存在屬性而不引發錯誤

  • April 17, 2012

範常式式碼:

Dim myObject
Set myObject = JSON.parse(someJsonResponseFromTheServer)    

myFunction(myObject.someProperty)

問題:

當在我的應用程序中執行與此類似的程式碼時,它會從伺服器引發500錯誤,並顯示類似於“對像不支持屬性或方法’someProperty’的消息。我想要解決這個問題的方法是這樣的:

Dim myObject
Set myObject = JSON.parse(someJsonResponseFromTheServer)    

If myObject.someProperty Then
   myFunction(myObject.someProperty)
End If

但是,如果我添加條件,它會在帶有條件的行而不是帶有方法呼叫的行上引發相同的錯誤。

我的問題:

在 ASP Classic 中,如何在不引發錯誤的情況下檢測對像中是否存在屬性?

經典 ASP 的好處之一是它允許您在同一頁面中同時執行 VBScript 和 JScript - 因此您可以使用兩者的強大功能。

首先,將此 JScript 程式碼塊添加到現有.asp文件中:

<script language="JScript" runat="server">
function CheckProperty(obj, propName) {
   return (typeof obj[propName] != "undefined");
}
</script>

假設 VBScript 是頁面中的預設語言,您可以在 VBScript 程式碼中呼叫它,如下所示:

Dim myObject
Set myObject = JSON.parse(someJsonResponseFromTheServer)    
If CheckProperty(myObject, "someProperty") Then
   myFunction(myObject.someProperty)
End If

使用通用類對像對其進行了測試,它工作正常 - JScript 在 VBScript 之前編譯,因此可以訪問它。

假設您包含一些 runat=“server” js 文件,該文件為您提供 JSON 解析器,然後JSON.parse將返回一個 Javascript 對象。

如果上述假設是正確的,那麼以下應該起作用:

If myObject.hasOwnProperty("someProperty") Then 
   myFunction(myObject.someProperty) 
End If 

引用自:https://stackoverflow.com/questions/10167898