2016-03-31 4 views
0

Ich habe ein ASP-Skript mit allen Headern für Server gesendet Ereignisse erforderlich. Das clientseitige Skript funktioniert. Ich habe es mit einem PHP-Skript getestet und es funktioniert gut. Das ASP-Skript funktioniert und es gibt die erwartete Nachricht zurück, wenn Sie es aus der URL-Zeile aufrufen, aber wenn das JavaScript es aufruft, gibt der Elementinspektor die Daten als "undefined" zurück. Wenn ich den Haltepunkt auf den Ereignislistener "open" setze, ist "e.data" "undefined".Server gesendet Ereignis und asp classic

Aus irgendeinem Grund akzeptiert Javascript den UTF-8-Text, der vom ASP-Skript gesendet wird, nicht.

Hilf mir bitte !!!

Der ASP-Code:

strResponse = strResponse & "data: " & now() 
response.Buffer = true 
response.CharSet = "utf-8" 
response.ContentType="text/event-stream"  
response.AddHeader "content-Type", "text/event-stream;charset=UTF-8" 
response.AddHeader "Cache-Control", "no-cache"  
response.AddHeader "Content-Length", len(strResponse) 
response.AddHeader "Connection", "Keep-Alive" 
response.Write strResponse 

Die Javascript:

if (!!window.EventSource) { 
    var source = new EventSource('serversend.asp'); 
    source.addEventListener('message', function (e) { 
     console.log(e.data); 
    }, false); 

    source.addEventListener('open', function (e) { 
     console.log("open " + e.data); 
    }, false); 

    source.addEventListener('error', function (e) { 
     if (e.readyState == EventSource.CLOSED) { 
      console.log(e.data); 
     } 
    }, false); 



} else { 
    // something else :(
} 

Thank you!

+0

Es könnte helfen, wenn Sie einen Code geschrieben. Auch, wenn Ihr Asp-Skript funktioniert, dann klingt es, als ob dies ein Javascript-Problem ist, anstatt ein asp-Skript. – John

+0

Hallo @John, danke, dass du dir die Zeit genommen hast, mir zu helfen. Der ASP-Code ist unten. Ich weiß, dass der JavaScript-Code funktioniert, weil es mit meinem PHP-Skript funktioniert. 'code' strResponse = strResponse & "Daten:" & now() Response.Buffer = true Response.Charset = "utf-8" Response.ContentType = "text/Event-stream" Response.AddHeader" content-Type "," text/ereignisstrom; charset = UTF-8 " response.AddHeader" Cache-Steuerung "," no-cache " response.AddHeader" Inhaltslänge ", len (strResponse) Antwort. AddHeader "Verbindung", "Keep-Alive" response.Write strResponse – AndreSites

+0

es sei denn, es gibt etwas früher in Ihrem Code, der 'strResponse' füllt es wird nichts anderes als" data: "und die aktuelle Zeit enthalten - ist das alles, was Sie wollen es enthalten? – John

Antwort

0

Try Response.Flush nach Response.Write

bearbeiten * Bringe zwei tritt nach der strResponse Zeichenfolge verwenden: response.Write strResponse & vbCrLf & vbCrLf

+1

Könnten Sie bitte erklären, warum und Verweis auf die entsprechende Dokumentation –

+0

Die Referenz ist w3schools: www.w3schools.com/html/html5_serversentevents.asp. –

+0

Aber das ist nicht der erros, ich habe entdeckt: du musst 2 eingeben nach string ... 'response.Write strResponse & vbCrLf & vbCrLf' –