gpt4 book ai didi

javascript - 引用错误 :XMLHttpRequest is not defined while using ClearScript(V8ScriptEngine)

转载 作者:行者123 更新时间:2023-11-30 19:57:26 26 4
gpt4 key购买 nike

我正在使用 V8ScriptEngine 从 C# 调用 javascript 函数的执行方法,但出现错误 ReferenceError: XMLHttpRequest is not defined。我安装了像 Xhook 这样的 nuget 包,但无法解析。请帮助我解决这个问题或建议调用 api 的方法使用 ClearScript(v8ScriptEnigne) 从 javascript 函数和从 c# 调用函数。

Javascript 函数:

 function Execute(paraList)
{
var finalUrl = "http://172.29.134.69:9006/api/Line/GetStationDefectsByStationId?stationId=1";
var sol=get(finalUrl,function(){var resp=this.response;return resp;});
return sol;
}
function get(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET",url, true);
xhr.send("");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (typeof callback === "function") {
callback.apply(xhr);
}
}
};



}

C# 代码:使用 V8ScriptEngine 从 C# 调用 javascript 函数

V8ScriptEngine _v8Engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging);        
_v8Engine.Execute(Script_Text);
_v8Engine.AddCOMType("XMLHttpRequest", "MSXML2.XMLHTTP");
object returnedVal = _v8Engine.Script.Execute();
return returnedVal;

最佳答案

XMLHttpRequestWeb APIs 之一由浏览器提供,而 ClearScript 和 V8 提供纯 JavaScript环境。

如果您只需要一种调用 HTTP 服务的方式,您可以公开类似 System.Net.WebClient 的内容.

如果您确实需要 XMLHttpRequest,您有几个选择。您可以公开 Windows COM 实现:

_v8Engine.AddCOMType("XMLHttpRequest", "MSXML2.XMLHTTP");

或者您可以使用 C# 或其他 .NET 语言实现它并公开它。一个这样的实现是 here .

编辑:使用同步请求的工作示例:

engine.AddCOMType("XMLHttpRequest", "MSXML2.XMLHTTP");
engine.Execute(@"
function get(url) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send();
if (xhr.status == 200)
return xhr.responseText;
throw new Error('Request failed: ' + xhr.status);
}
");

Console.WriteLine(engine.Script.get("https://www.google.com"));

关于javascript - 引用错误 :XMLHttpRequest is not defined while using ClearScript(V8ScriptEngine),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53810084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com