0

Bir Sharepoint 2013 sitem var. Dış bir API'ye ajax çağrısı yapan ana sayfaya bir web bölümü ekledim ve bir görüntü ve bağlantı gösteren JSON verilerini döndürdüm. Siteyi Chrome'da ziyaret ettiğinizde, mükemmel çalışır, ancak Internet Explorer'da (11) işe yaramıyor. Tuhaf kısmı, JS'yi çalıştırdığını biliyorum çünkü ikinci satırdan "Geçerli Haberler Yok" p etiketini gösteriyor. Bu benim kodudur: Şirketimin anahtara sahip olduğundansharepoint ajax çağrı internet explorer'da gösterilmiyor

<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> 

Ben, Sorgu Dize değişti, ama çalıştığını size temin ederim. Chrome'da, bu her şeyi iyi gösterir, ancak IE'de "Geçerli Haberler Yok" mesajını gösterir.

Yanlış bir şey mi yaptım veya Internet Explorer'ın Ajax'a karşı bir sorunu var mı?

+2

ajax istek yönetimini kendiniz uygulamak yerine Jquery'e atayabilirsiniz, bkz. Https://api.jquery.com/jquery.get/ – Kalamarico

cevap

1

Kalamarico tarafından önerilen en iyi yol, jquery ajax çağrısını kullanmak ve aynı zamanda tam hata olup olmadığını kontrol etmek için hata işleyicisini de eklemektir. Yukarıdaki kodda javascript çağrınız çalışıyor ancak hazır durum 4'e gitmeyebilir ve bu nedenle değeri ayarlamadı. Diğer eyaletleri kontrol edebilir ve ayrıca hazır durum 4'e girdikten sonra başka bir içteki readystatechange olayının içinde http isteği çağrısı yapamazsınız. Ayrıca tekrar ateşlenir.

İlgili konular