javascript - 解析 EntityName XMLHttpRequest 请求时出错
问题描述
我正在尝试GET
在 java 脚本中使用 XMLHttpRequest 对 MS 流进行 http 请求,但出现上述错误。我知道这是因为网址。谁能帮助我我的网址的确切问题是什么。
var finalurl = "https://prod4-30.centralindia.logic.azure.com:443/workflows/ed30ad9219a940fa8e5af317cf697e4c/triggers/manual/paths/invoke?api-version=2016-06-01&sp=/triggers/manual/run&sv=1.0&sig=ctQe3OAscgTfzDgji9gS_B43lvHEV4JP-hGdaxu46wg";
function DohttpRequest(greeting) {
alert(greeting);
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', '" + finalurl + "', false);
xmlHttp.send(null);
var jsonResponse = JSON.parse(xmlHttp.responseText);
console.log(jsonResponse);
alert(xmlHttp.responseText);
}
我正在使用自定义操作在 sharePoint 中执行 GET 请求。CommandAction 自定义动作的定义如下
UserCustomAction SPToDBAction = collUserCustomAction.Add();
SPToDBAction.Location = "CommandUI.Ribbon.ListView";
SPToDBAction.Sequence = 10001;
SPToDBAction.Title = "SPToDBAction";
string location = "<CommandUIDefinition Location=\"Ribbon.ListItem.Actions.Controls._children\">";
SPToDBAction.CommandUIExtension = @"<CommandUIExtension><CommandUIDefinitions>"
+ location
+ "<Button Id=\"InvokeAction.Button\" TemplateAlias=\"o1\" Command=\"EditFormButtonCommand\" CommandType=\"General\" LabelText=\"Sync SP To DB\" Image32by32=\"data:image/png;base64,iVB= \" />"
+ "</CommandUIDefinition>"
+ "</CommandUIDefinitions>"
+ "<CommandUIHandlers>"
//+ "<CommandUIHandler Command =\"EditFormButtonCommand\" CommandAction = \"javascript:alert('Custom List ECB custom Action')\" />"
+ "<CommandUIHandler Command =\"EditFormButtonCommand\" CommandAction = \"javascript:DohttpRequest('Are you sure to sync the Items from Sharepoint to Database'); function DohttpRequest(greeting){ alert(greeting); var xmlHttp = new XMLHttpRequest(); xmlHttp.open( 'GET', '" + finalurl + "', true ); xmlHttp.send( null ); var jsonResponse = JSON.parse( xmlHttp.responseText); console.log(jsonResponse); alert( xmlHttp.responseText);}\" />"
+ "</CommandUIHandlers></CommandUIExtension>";
SPToDBAction.Update();
解决方案
不建议使用同步 XMLHttpRequest (async = false),因为 JavaScript 将停止执行,直到服务器响应准备好。如果服务器繁忙或缓慢,应用程序将挂起或停止。
对于异步请求,您需要等待服务器响应,为此您需要使用 XMLHttpRequest onreadystatechange 属性,因此最终您的函数代码将如下所示...
function DohttpRequest(greeting) {
alert(greeting);
let xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
let jsonResponse = JSON.parse(this.responseText);
console.log(jsonResponse);
alert(this.responseText);
}
};
xmlHttp.open('GET', '" + finalurl + "', true);
xmlHttp.send();
}
希望能帮助到你...
推荐阅读
- multithreading - Qt中术语“事件循环”wrt线程的含义是什么?
- algorithm - 如何找到连接不同联合之间不同节点的最佳方式?
- r - R Shiny:为长标签加宽 d3Tree
- dynamics-crm - getEventArgs().getSaveMode() 返回未定义以取消潜在客户资格
- git - 从 fork 中删除更改并同步到原点
- reactjs - 在 react/redux 中从 reducer 返回新状态的最佳实践是什么?
- php - 请求验证在 Symfony 中强加验证代码重复
- android - 使用带有 Appium 的混合 Android 智能手机扫描条码
- jmeter - 在 JMeter 中保存 SSL 证书
- javascript - 日期(根据地区分配)