2017-06-16 34 views
0

我已經將一個狗的名字從Pg1傳遞到Pg2。我已在下面的代碼中添加註釋,以逐步解釋發生的事情。我的代碼一直運行到最後一個函數,該函數應該搜索girls.xml中的狗名,並將相關節點加載到Pg2中的配置文件中。通過名稱變量將不會加載新的XML內容

如果您有任何改進我的代碼的建議,我將不勝感激。善待我自學:-)

這是litters.xml文件是如何被格式化

<?xml version="1.0" encoding="utf-8"?> 
<litter> 
    <litter_id>201704</litter_id> 
    <dogs_mom>June Bug</dogs_mom> 
    <dogs_dad>Oscar</dogs_dad> 
    </litter> 

這是girls.xml文件是如何被格式化

 <?xml version="1.0" encoding="utf-8"?> 
<breeder> 
    <girls> 
    <dog> 
     <dogs_breeding_name>Adora</dogs_breeding_name> 
     <profile> 
      <![CDATA[<strong>Adora</strong> is a second generation puppy. Adora lives in a guardian home. ]]> 
     </profile>   
     </dog> 
    </girls> 
</breeder> 

pg1.html狗媽媽的名字已被點擊(litters.xml)並傳遞到pg2.html

$(".thumb-but-link").click(function (e) { 
e.preventDefault(); 
var i = $(e.currentTarget).text(); 
window.location.href = '../xml/pg2.html' + '#' + i; 
}); 

pg2.html文件加載girls.xml文件

$.ajax({ 
    type: "GET", 
    url: "../xml/girls.xml", 
    dataType: "xml", 
    success: findDog 
    }); 

的findDog函數加載女孩節點

 function findDog(xml){ 
     $(xml).find('girls').each(function() { 
     girlsXml = $(this); 

然後使用if語句來檢查以查看是否從pg1.html傳遞了新的狗名稱,如果沒有名稱通過,它將加載默認(第一隻狗) e girls.xml文件放入頁面上的狗檔案。

 if(window.location.hash.substring(1)) { 
        var i = location.hash.match(/^#?(.*)$/)[1]; 
        var x = girlsXml.find('dog:contains("i")'); 
        loadClickedContent(x) 
       }else{ 
        var x = girlsXml.find('dog').first(); 
        loadClickedContent(x) 
      } 
      }); 
     } 


    function loadClickedContent(x) { 
     girlsXml.find(x).each(function() { 
      var x = $(this); 
      var dogsBreedingName = x. find('dogs_breeding_name').text(); 
      var profileName = x.find('profile').text(); 

      $("#breedingNameHolder").empty(); 
      $("#profileHolder").empty(); 

      $("#breedingNameHolder").append(dogsBreedingName); 
      $("#profileHolder").append(profileName); 
     }); 
    } 
</script> 

所以......

Pg1.html拇指但鏈接」從litters.xml正確地傳遞狗的名字Pg2.html

PG2。 html the girls.xml加載正確

Pg2.xml能夠加載默認狗從girls.xml到配置文件

Pg2.html if語句能夠從Pg1.html

Pg2.html else語句能夠讀取默認狗看狗的名字來自girls.xml。然後它調用loadClickedContent函數並將默認狗加載到配置文件中。

我想我的問題可能是當我從if語句調用loadClickedContent函數時,它不會加載新的內容。它有可能是不正確的格式?我曾嘗試將.html()和.text()放在最後,但它們不起作用。

回答

0

當你在尋找狗的名字時,你實際上並沒有把它放在搜索中,你只是把字母i,嘗試下面的代碼,其中變量i連接到字符串中找到所需的狗。

var x = girlsXml.find('dog:contains("'+i+'")'); 
+0

感謝您的快速回復。我試過你的解決方案,但它給了我這個錯誤信息。 「SyntaxError:Unexpected token'{'。Expected'}'to end a object literal。」 – Sylviamc