0

Sharepoint 2013サイトが設定されています。私は外部APIへのajax呼び出しを行うホームページにWebパーツを追加し、JSONデータを返し、画像とリンクを表示します。 Chromeでサイトにアクセスすると完全に動作しますが、Internet Explorer(11)では動作しません。奇妙な部分は、JSが実行されていることを知っています。なぜなら、2行目の "No News News" pタグを表示しているからです。これは私のコードです:sharepointインターネットエクスプローラでajaxコールが表示されない

<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では「現在のニュースなし」と表示されます。

私は間違ったことをしましたか、またはInternet ExplorerにAjaxと何か関係がありますか?

+2

自分で実装する代わりに、ajaxリクエスト管理をJqueryに委譲できます。https://api.jquery.com/jquery.get/ – Kalamarico

答えて

1

Kalamaricoが提案するように、jquery ajaxコールを使用して、エラーハンドラを追加して正確なエラーを確認することをお勧めします。上記のコードでは、javascript呼び出しが機能していますが、準備状態4にはなっておらず、したがって値を設定していない可能性があります。あなたは他の州をチェックすることができますまた、他の場合は準備ができて状態4を打った後にreadystatechangeイベント内のHTTPリクエストの呼び出しであってはいけません。

関連する問題