Я действительно новичок в браузере CefSharps Chromium и затрудняюсь выяснить, как получить результат запроса jQuery ajax.CefSharp - Получить результат запроса AJAX
Моя первая попытка состояла в том, чтобы передать мой запрос AJAX EvaluateScriptAsync
. На самом деле скрипт работает. Он делает именно то, что я хочу, но я не получаю никаких кодов результатов/статусов, потому что моя Cef-Task не ждет, пока AJAX завершит свою работу.
Вот пример (всего лишь пример кода):
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);
Потом я прочитал, что есть SchemeHandler, но я не правильно понять, как его реализовать. Может кто-нибудь мне помочь?
Заранее спасибо.
Если вы вернули значение в своем анонимном закрытии, это будет возвращено в результате 'EvaluateScriptAsync'. Вы можете вернуть params как json, а затем выполнить 'WebRequest' в' C#', после чего выполните более 'JS', чтобы обновить свой' UI'. Я не особо рекомендую этот подход, см. Альтернативы ниже. – amaitland