首页 > 解决方案 > 解析 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();

标签: javascriptgetxmlhttprequest

解决方案


不建议使用同步 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();
}

希望能帮助到你...


推荐阅读