经典ASP Microsoft.XMLHTTP onreadystatechange

时间:2016-06-23 20:13:19

标签: asynchronous asp-classic xmlhttprequest

我正在尝试使用经典ASP中的回调函数进行异步调用。这是我的代码:

Set objHTTP = CreateObject("Microsoft.XMLHTTP")
With objHTTP
    .open "POST", base_url_crm & "contacts", True, login_crm, key_crm
    .setRequestHeader "Content-Type", "application/json"
    .setRequestHeader "Accept", "application/json"
    .onreadystatechange = Check_state
    .send json
End with

Set objHTTP = Nothing

Public Function Check_state
    if objHTTP.ReadyState = 4 then
        Response.Write "Finish"
    end if
End Function

它返回此错误:

Type mismatch: 'onreadystatechange'

如何在异步调用结束后立即执行Check_state函数? 它必须是异步的(不想让我的用户等待)并且无法在javascript中执行此操作。

2 个答案:

答案 0 :(得分:0)

您不能像在JavaScript中那样将事件绑定到函数,因为只需传递函数的名称就会立即调用它,返回其输出,而是将其分配。使用GetRef函数绑定事件,如下所示:

Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.onreadystatechange = GetRef("Check_state")

See here有关GetRef的文档。

答案 1 :(得分:0)

尝试使用状态而不是onreadystatechange,它会返回诸如200,404和500之类的值。