SharePoint ajax JavaScript浏览器兼容性

时间:2019-03-05 21:03:09

标签: javascript ajax xml soap sharepoint

我继承了一些使用了多年浏览器兼容性问题的JS代码。我在javascript方面的经验非常有限,因此无法确定问题所在。

具体地说,这是从SharePoint 2013安装中提取信息。它使用肥皂api调出共享点内的列表,以XML格式从列表中获取一些项目,然后将该信息添加到页面中。该代码在IE和Edge中可以正常运行,但在Chrome或Firefox中似乎无法正常工作。

我确实进行了测试,并且浏览器似乎确实输入了浏览器检测if语句的正确部分

我减少了一些原始代码,删除了append语句,并用简单的alert.length()替换了它们。完成此操作后,代码似乎正在IE / Edge中返回数据(长度> = 1),但在Chrome / FireFox中,它未返回任何数据(长度为0)。

知道我的问题在这里吗?

var WebAlerts = {} || WebAlerts;

WebAlerts.getWebAlerts = function () {
  var soapEnv = '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">\
    <soap12:Body>\
      <GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">\
        <listName>Web Alerts</listName>\
          <query><Query>
            <Where><And>
              <Eq><FieldRef Name="Important" /><Value Type="String">1</Value></Eq>
              <Geq><FieldRef Name="Expires" /><Value Type="DateTime"><Today /></Value></Geq>
            </And></Where>
          </Query></query>\
          <viewFields><ViewFields><FieldRef Name="Body" /></ViewFields></viewFields>\
      </GetListItems>\
    </soap12:Body>\
  </soap12:Envelope>';

  var xml = $.ajax({ url: "//domain.com/_vti_bin/lists.asmx",
    type: "POST", dataType: "xml", data: soapEnv,
    error: WebAlerts.printError,
    complete: WebAlerts.processResults,
    contentType: "text/xml; charset=\"utf-8\"",
  });
}

WebAlerts.processResults = function (xData, status) {
  var xmlalerts;
  if (browseris.ie)
  {
    var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
    xmldoc.loadXML(xData.responseText);
    xmlalerts = $(xmldoc).find("z\\:row");
  }
  else
  {
    xmlalerts = $(xData.responseXML).find("row");
  }

  alert(xmlalerts.length);
}

0 个答案:

没有答案