Ich bin wirklich neu in CefSharps Chromium Browser und habe Schwierigkeiten herauszufinden, wie man das Ergebnis einer jquery ajax Anfrage erhält.CefSharp - Ergebnis der AJAX Anfrage erhalten
Mein erster Versuch war, meine AJAX Anfrage an EvaluateScriptAsync
zu übergeben. Tatsächlich funktioniert das Skript. Es macht genau das, was ich will, aber ich bekomme keine Ergebnisse/Statuscodes, weil meine Cef-Task nicht wartet, bis AJAX seine Arbeit beendet hat.
Hier ein Beispiel (nur ein Beispielcode):
var tasks = pdBrowser.EvaluateScriptAsync(@"
(function(){
$.ajax({
type: ""POST"",
dataType: ""json"",
cache: false,
url: ""_resources/php/ajaxRequests.php"",
async: false,
data: {
action: ""insertCrossPlatform"",
type: """",
values: JSON.stringify(""foo bar"")
},
success: function(response) {
if (typeof response === 'string' && response.substring(0, 5) == ""ERROR"")
{
return response;
}
else
{
//pageReload();
return ""OK"";
}
},
error: function(xhr, textStatus, errorThrown) {
return errorThrown + ""\n"" + xhr.responseText;
},
complete: function() {
return ""COMPLETE"";
}
});
})();", null);
tasks.ContinueWith(t =>
{
if (!t.IsFaulted)
{
var response = t.Result;
if (response.Success)
{
if (response.Result != null)
{
MessageBox.Show(response.Result.ToString());
}
}
else
{
MessageBox.Show(response.Message, "Ein Fehler ist aufgetreten", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}, TaskScheduler.Default);
Danach habe ich gelesen, dass es ein SchemeHandler ist, aber ich verstehe nicht richtig, wie es zu implementieren. Kann mir jemand helfen?
Vielen Dank im Voraus.
Wenn Sie in Ihrem anonymen Abschluss einen Wert zurückgegeben haben, wird dieser als Ergebnis von "EvaluateScriptAsync" zurückgegeben. Sie könnten die Parameter als json zurückgeben und dann eine 'WebRequest' in' C# 'ausführen, wenn Sie fertig sind, führen Sie' JS' aus, um Ihre 'UI' zu aktualisieren. Ich empfehle diesen Ansatz nicht besonders, siehe unten. – amaitland