2016-06-23 15 views
1

Ich versuche, einen asynchronen Aufruf mit einer Rückruffunktion im klassischen ASP zu machen. Dies ist mein Code:Classic ASP Microsoft.XMLHTTP onreadystatechange

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 

Sein diesen Fehler zurück:

Type mismatch: 'onreadystatechange' 

Wie kann ich die Check_state Funktion direkt nach dem Asynchron-Anruf beendet ausführen? Es muss async sein (lass meine Benutzer nicht warten) und kann dies nicht in Javascript tun.

+0

Sie keine Asynchron-Aufruf wie folgt (auch wenn Sie den Rückruf bekam richtig zugeordnet) verwenden können. Es gibt nichts, was das serverseitige Skript auf den Rückruf warten lässt: Sobald der 'send'-Teil fertig ist, wird die Seite beendet. –

Antwort

0

Sie können keine Ereignisse an Funktionen binden, wie Sie es in JavaScript tun, da die einfache Übergabe des Namens der Funktion sie sofort zurückgibt, ihre Ausgabe zurückgibt und diese stattdessen zugewiesen wird. Verwenden Sie die GetRef Funktion Ereignisse zu binden, etwa so:

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

See here Dokumentation über GetRef.

+0

Ich bekomme den Fehler "Ungültiger Prozeduraufruf" mit GetRef. – Onaiggac

0

Versuchen Sie, den Status statt onreadystatechange verwendet, gibt es Werte wie 200, 404 und 500.

+0

Es wird nicht async, wenn ich eine Schleife codieren muss, um den Status zu überprüfen. – Onaiggac