Javascript CefSharp-获取AJAX请求的结果

Javascript CefSharp-获取AJAX请求的结果,javascript,c#,jquery,ajax,cefsharp,Javascript,C#,Jquery,Ajax,Cefsharp,我对CefSharps Chromium浏览器非常陌生,很难弄清楚如何获得jQueryAjax请求的结果 我的第一次尝试是将AJAX请求传递给evaluateScript async。事实上,这个剧本很管用。它正是我想要的,但我没有得到任何结果/状态代码,因为我的Cef任务不会等到AJAX完成它的工作 下面是一个示例(只是一个示例代码): 后来我读到有一个SchemeHandler,但我不太明白如何实现它。有人能帮我吗 提前感谢。首先,SchemeHandler不太可能适用于这种情况,您通常会在

我对CefSharps Chromium浏览器非常陌生,很难弄清楚如何获得jQueryAjax请求的结果

我的第一次尝试是将AJAX请求传递给
evaluateScript async
。事实上,这个剧本很管用。它正是我想要的,但我没有得到任何结果/状态代码,因为我的Cef任务不会等到AJAX完成它的工作

下面是一个示例(只是一个示例代码):

后来我读到有一个SchemeHandler,但我不太明白如何实现它。有人能帮我吗


提前感谢。

首先,
SchemeHandler
不太可能适用于这种情况,您通常会在提供响应时实现一个
SchemeHandler

大多数人选择绑定对象,并在希望与父应用程序通信时调用绑定对象上的方法。有关示例,请参见
FAQ


使用
49.0.0
您可以实现
ResponseFilter
来访问底层响应缓冲区,它很复杂,而且没有很好的文档记录,因此如果您不习惯在参考
C++
代码中挖掘,那么此选项不适合您。这里有一个参考

我做的事情是通过javascript在页面上创建一个元素,ID是ajax调用的响应。例如,在进行ajax调用时,为ajax调用分配一个ID

当ajax调用返回时,使用预先分配的id和回调信息在页面上编写一个元素。然后您可以使用cefsharp从页面读取元素内容,这将是您的回调信息

var myDivElement =document.getElementById('textareaInfo');

if( myDivElement === null)
{
var input = document.createElement('textarea'); 
input.id = "textareaInfo";
input.value = "Test"
input.rows="4";
input.cols="50";
input.style="height:100%;width:900px;"

var dom = document.getElementsByClassName("page-body")[0];
dom.insertAdjacentElement('afterbegin', input)
}
然后稍后使用ajax

然后在c中读取cefsharp中的texarea#


chromeBrowser.GetMainFrame().EvaluateScript Async(函数()…$(textareaInfo).value).Result

如果在匿名闭包中返回值,则该值将作为
EvaluateScript Async
的结果返回。您可以将参数作为json返回,然后在
C#
中执行
WebRequest
,完成后执行more
JS
以更新您的
UI
。我并不特别推荐这种方法,请参阅下面的备选方案。指向wiki的链接非常有用。我没有想到绑定一个对象。。。这对我来说真的是一个很好的解决方案。今晚我要尽快测试一下。事实上,不,我不太喜欢C++。我知道一些基本的C++,但我认为它不够深入,无法理解如何使用该方法。我会在有空的时候尝试一下,但在此期间,我非常确定会使用第一种解决方案,绑定该对象。
var myDivElement =document.getElementById('textareaInfo');

if( myDivElement === null)
{
var input = document.createElement('textarea'); 
input.id = "textareaInfo";
input.value = "Test"
input.rows="4";
input.cols="50";
input.style="height:100%;width:900px;"

var dom = document.getElementsByClassName("page-body")[0];
dom.insertAdjacentElement('afterbegin', input)
}
var root = 'https://jsonplaceholder.typicode.com';

var _holder = callbackObj;

callbackObj.showMessage(""ajax"");

$.ajax({

  url: root + '/posts/1',
 contentType: 'application/json; charset=utf-8',
  method: 'GET',
complete: function(data){

},
 success: function(response) {

     $(#'textareaInfo').value(response);                
                        }
}).then(function(data) {
   callbackObj.showMessage(data);
});