示例代码:
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中,如何在不抛出错误的情况下检测对象中是否存在属性?
答案 0 :(得分:16)
经典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之前编译,因此可以访问它。
答案 1 :(得分:7)
可悲的是,这通常意味着“出错”声明。
Private Function TestProperty()
Dim Success
Success = False
On Error Resume Next
' set for property here
Success = (Err.Number = 0)
On Error Goto 0
TestProperty = Success
Exit Function
答案 2 :(得分:2)
假设您正在包含一些为您提供JSON解析器的runat =“server”js文件,那么JSON.parse
将返回一个Javascript对象。
如果上述假设是正确的,则以下情况应该起作用:
If myObject.hasOwnProperty("someProperty") Then
myFunction(myObject.someProperty)
End If