示例代码:
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中,如何在不抛出错误的情况下检测对象中是否存在属性?
Sha*_*ard 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之前编译,因此可以访问它.
可悲的是,这通常意味着"错误"声明.
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   
假设您包含一些为您提供 JSON 解析器的 runat="server" js 文件,那么JSON.parse它将返回一个 Javascript 对象。
如果上述假设是正确的,那么以下应该有效:
If myObject.hasOwnProperty("someProperty") Then 
    myFunction(myObject.someProperty) 
End If 
| 归档时间: | 
 | 
| 查看次数: | 8243 次 | 
| 最近记录: |