Asp-Classic
VBScript / Classic ASP - 如何檢查對像中是否存在屬性而不引發錯誤
範常式式碼:
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