2014-01-23 48 views
1

我試圖用JS(Node和ajax(和jQuery庫))替換我所有的PHP,但在將以下PHP腳本轉換爲ajax時遇到困難發動機。將PHP腳本轉換爲讀取和打印XML數據的JavaScript腳本

<?php 
    $xmlDoc=new DOMDocument(); 
    $xmlDoc->load("Administration/data/people.xml"); 

    $xx=$xmlDoc->getElementsByTagName('person'); 

    $hintt=""; 
    for($ii=0; $ii<($xx->length); $ii++) 
     { 
     $yy=$xx->item($ii)->getElementsByTagName('id'); 
     $zz=$xx->item($ii)->getElementsByTagName('fullName'); 
     if ($yy->item(0)->nodeType==1) 
     { 

      echo "<button type='button' class='mybutton' name='users'>" . 
      $zz->item(0)->childNodes->item(0)->nodeValue . "</button>"; 

     } 
     } 

    ?> 

這裏是我的ajax嘗試:

 <div id="loadMe"> 
      <h1>Reading..</h1> 
     </div> 

     <script> 
       $.ajax({ 
        type: "GET", 
        url: "Administration/data/people.xml", 
        dataType: "xml", 
        success: function(xml) { 
         $(xml).find('person').each(function(){ 
          var fullName = $(this).attr('fullName'); 
          $("<button type=button class=mybutton value='+fullName+'></button>").html("<h3>'+fullName+'</h3>").appendTo('#loadMe'); 
         }); 
        } 
       }); 
     </script> 

對我來說,它看起來非常相似,但JS是行不通的。任何人看到不一致或可以告訴我爲什麼我的XML元素不附加到指定的div標籤?提前感謝球員和球員!編輯(1/24/14 1:24 AM): 我認爲提供我的XML會有幫助,也許我引用的數據是錯誤的?

<people> 
    <person> 
    <id>10</id> 
    <fullName>Philadelphia Collins</fullName> 
    <firstName>Philadelphia</firstName> 
    <lastName>Collins</lastName> 
    <age>62</age> 
    <hometown>Sunnyvale</hometown> 
    <job>Restraunt Owner</job> 
    </person> 
<people> 
+0

你應該做'.done()'和'.fail()'而不是'成功:' –

+2

'$('

+0

我用過,但這不是問題的原因@Blazemonger你是否看到任何邏輯錯誤? – Jim22150

回答

0

我已經成立了一個test page,你可以嘗試和玩,如果在任何時候你需要做更多的探索。所以解決方案就來了。

首先,我試着做一個AJAX請求,由於XML無效,它總是返回失敗。如果我只是試圖訪問XML,它表示它無效並且無法顯示。問題是關閉<people>標籤丟失/。它應該是</people>'. So that fixed the AJAX request failing. The next part was parsing the XML response. I did this by using the .children()method in jQuery and then getting the text of the element with .text()`。它結束了看起來像這樣:

var fullName = $(this).children('fullName').text(); 
與所有

所以和別的我可能已經錯過了,但可在測試頁,我希望你能解決您的問題,並獲得成功的AJAX請求去。如果我錯過了任何東西或者我不清楚,請告訴我,我會盡量多解釋一下。

順便說一下,在Chrome DevTools中使用console.log();並使用斷點來自己訪問數據總是可以幫助我瞭解我正在處理的內容,這樣我就知道如何從請求中獲取我想要的數據。

祝你好運!

+0

我的答案是否適合你? –