2014-04-09 22 views
1

我在使用我的應用時需要加載一些XML時遇到了一些問題。這段代碼在瀏覽器中工作得非常好,因此我唯一能想到的就是我在使用phonegap deviceready鉤子做錯了事情。自動加載XML數據不能與PhoneGap和iOS配合使用

任何想法將不勝感激。

我已經取出了我的主要開發服務器地址的XML,順便說一句。

var xmlhttp; 
window.onload = function() { 
    document.addEventListener('deviceready', getData, false); 
    xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = loadData; 
} 

function getData() { 
    xmlhttp.open("GET", "http://example.com/xml.php", true); 
    xmlhttp.send(); 
} 

function loadData() { 
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) { 
     var storiesXML = xmlhttp.responseXML.documentElement.getElementsByTagName("stories"); 
     var wrapper = '<div class="storiesWrapper">'; 
     var contentPage = ''; 
     for (var i = 0; i < storiesXML.length; i++) { 
      var homeOutput = '<div class="storyContainer">'; 
      var titleElement = storiesXML[i].getElementsByTagName("title"); 
      var titleText = titleElement[0].firstChild.nodeValue; 
      var summaryElement = storiesXML[i].getElementsByTagName("summary"); 
      var summaryText = summaryElement[0].firstChild.nodeValue; 
      var imgElement = storiesXML[i].getElementsByTagName("img"); 
      var imgText = imgElement[0].firstChild.nodeValue; 
      var fulltextElement = storiesXML[i].getElementsByTagName("fulltext"); 
      var fulltextText = fulltextElement[0].firstChild.nodeValue; 
      var videolinkElement = storiesXML[i].getElementsByTagName("videolink"); 
      var videoLink = videolinkElement[0].firstChild.nodeValue; 
      var pageId = titleText.toLowerCase().replace(/\s+/g, ''); 
      homeOutput += '<img class="thumbnail" src="' + imgText + '" />'; 
      homeOutput += '<a class="titleText" data-transition="slide" href="#' + pageId + '">' + titleText + '</a>'; 
      homeOutput += '<p class="summaryText">' + summaryText + '</p>'; 
      homeOutput += '<div class="clear"></div>'; 
      homeOutput += '</div>'; 
      if ((document.getElementById(pageId)) == (null)) { 
       var pageOutput = '<div class="pageContent" data-role="page" data-theme="b" id="' + pageId + '">'; 
       pageOutput += '<div data-role="header" class="header">'; 
       pageOutput += '<a class="backButton" href="javascript:history.go(-1)" data-transition="slide" data-diraction="reverse" data-icon="back">Back</a>' 
       pageOutput += '<h1>Stories</h1>'; 
       pageOutput += '</div>'; 
       pageOutput += '<h2 class="storyTitle">' + titleText + '</h2>'; 
       pageOutput += '<a href="' + videoLink + '">'; 
       pageOutput += '<img class="featuredImage" src="' + imgText + '" />'; 
       pageOutput += '</a>'; 
       pageOutput += '<div data-role="content" class="mainText">'; 
       pageOutput += fulltextText; 
       pageOutput += '</div>'; 
       pageOutput += '</div>'; 
       contentPage += pageOutput; 
      } 
      wrapper += homeOutput; 
     } 
     wrapper += '<div class="clear"></div>'; 
     wrapper += '</div>'; 
     document.getElementById("stories").innerHTML = wrapper; 
     if ((document.getElementById(pageId)) == (null)) { 
      $(contentPage).insertAfter("p#insertAfter"); 
     } 
    } 
} 
setInterval(getData, 60000); 

回答

0

這似乎這個問題是window.onload AFTER觸發器deviceready

我改變了代碼,這和它現在工作得很好

var xmlhttp; 

xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = loadData; 

document.addEventListener('deviceready', getData, false); 

function getData() { 

    xmlhttp.open("GET", "http://dev.emagpress.com/app-dev/helloxml/appxml.php", true); 
    xmlhttp.send(); 

} 
相關問題