sharepoint ajax call未在Internet Explorer

时间:2016-04-10 21:17:24

标签: javascript ajax internet-explorer sharepoint sharepoint-2013

我已经设置了Sharepoint 2013网站。我在主页上添加了一个Web部件,它对外部API进行ajax调用,并返回JSON数据,显示图像和链接。当您在Chrome中访问该网站时,它运行正常,但在Internet Explorer(11)中,它无法正常工作。奇怪的是我知道它正在运行JS,因为它显示了第二行的“No Current News”p标签。这是我的代码:

<h1 style="text-align: center">PQA In The News</h1>
<div id="myNewsFeed"><p>No Current News</p></div>
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script><script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script><script type="text/javascript">

$(document).ready(function() {
document.getElementById("myNewsFeed").innerHTML = "<p>No Current News</p>";
  var d = new Date();
  var n = d.getTime();
  var mo = 86400000 * 30;
  n = n - mo;
  var queryString = "https://webhose.io/search?token=xxxx&format=json&q=Company%20Name&ts=" + n;
  loadJSON(queryString);

         function loadJSON(newsURI){
            var data_file = newsURI;
            var http_request = new XMLHttpRequest();
            try{
               // Opera 8.0+, Firefox, Chrome, Safari
               http_request = new XMLHttpRequest();
            }catch (e){
               // Internet Explorer Browsers
               try{
                  http_request = new ActiveXObject("Msxml2.XMLHTTP");

               }catch (e) {

                  try{
                     http_request = new ActiveXObject("Microsoft.XMLHTTP");
                  }catch (e){
                     // Something went wrong
                     alert("Your browser broke!");
                     return false;
                  }

               }
            }

            http_request.onreadystatechange = function(){

               if (http_request.readyState == 4  ){
                  var jsonObj = JSON.parse(http_request.responseText);
                 DisplayData(jsonObj);
               }
            }

            http_request.open("GET", data_file, true);
            http_request.send();
         }


function DisplayData(data) {
  var htmlSource = "<ul>";
  for(var i=0; i < data.posts.length; i++) {
    htmlSource += "<li><a href=\"" + data.posts[i].url + "\"><img src=\"" + data.posts[i].thread.main_image + "\" height=\"150px\" width=\"150px\">" + data.posts[i].title + "</a></li>";  
  }
  htmlSource += "</ul>"
  document.getElementById("myNewsFeed").innerHTML = htmlSource;
}

});</script>

我更改了查询字符串,因为它有我公司的密钥,但我可以保证它有效。在Chrome上,这显示一切正常,但在IE中它只显示“No Current News”。

我做错了什么,或者Internet Explorer是否有针对Ajax的内容?

1 个答案:

答案 0 :(得分:1)

根据Kalamarico的建议,最好的方法是使用jquery ajax调用,并添加失败处理程序以检查确切的错误。在上面的代码中,您的javascript调用正在运行,但它可能不会进入就绪状态4,因此不会设置该值。你可以检查其他状态,也不应该是在其他内部的readystatechange事件内的http请求调用,否则在达到就绪状态4后它也将再次触发。