2012-10-06 133 views
0

這裏是我的html頁面的一段jQuery代碼XML字符串和解析使用jQuery

$.ajax({ 
       url: 'userlist.php', 
       type: 'post', 
       data: 'id='+extr, 
       success: function(results){     
        $("#uservidshow").text("Page Title: "+$(results).find("vidlist").attr("title")); 
        //$("#uservidshow").text(results); 
        $(results).find("vids").each(function(){      
        $("#uservidshow").append("<br/><br/>Video Name: "+$(this).attr("vtitle")+"<br/>Link: "+$(this).attr("link")+"<br/>Description: "+$(this).find("descr").text()+"<br/><br/>"); 
        });     
       } 
      }); 

---這裏是被顯示在DIV#uservidshow輸出---

頁標題:未定義

視頻名稱:兒童視頻

鏈接: http://www.youtube.com/watch?v=PIchX1LX0

說明:


我的問題是:

  • 爲什麼我得到 '未定義' 頁面的標題?

  • 爲什麼我在描述中顯示空白而不是顯示cdata內容?


---這裏是一塊從userlist.php代碼---

<?php 

$getid=$_POST['id']; 

.... 
[few lines of code] 
.... 
      $pickfrmtab= mysql_query("SELECT * FROM mytable WHERE userid='$getid'");  
      if(mysql_num_rows($pickfrmtab)==1){ 
       while($row = mysql_fetch_array($pickfrmtab)){ 
        echo htmlspecialchars_decode($row['pagecontent'], ENT_QUOTES); //'pagecontent' contains my xml string 
       }   
      }else{ 
       echo "Unable to get PLAYLIST"; 
      }   

?> 

---這裏是在存儲在數據庫中的XML字符串列名'pagecontent'---

&lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039; ?&gt;&lt;vidlist title=&#039;My Fav Videos&#039;&gt; 
&lt;vids link=&#039;http://www.youtube.com/watch?v=PIchX1LX0&#039; vtitle=&#039;Kids video&#039;&gt; 
&lt;descr&gt;&lt;![CDATA[this is nice]]&gt;&lt;/descr&gt; 
&lt;/vids&gt; 
&lt;comment allow=&#039;no&#039;&gt;&lt;/comment&gt; 
&lt;/vidlist&gt; 

正如你可能已經猜到了,我已經將其插入到數據庫之前應用的htmlspecialchars(),以實際的XML字符串

$xmldata="<?xml version='1.0' encoding='UTF-8' ?>".$_POST['actualxmlstrng']; 
$xmldata_safe=htmlspecialchars($xmldata, ENT_QUOTES); 
//inserted $xmldata_safe into the datacbase field 'pagecontent' SUCCESSFULLY 

只給你一個想法,這就是$ XMLDATA看起來像在申請前用htmlspecialchars:

<?xml version='1.0' encoding='UTF-8' ?> 
<vidlist title='My Fav Videos'> 
<vids link='http://www.youtube.com/watch?v=PIchX1LX0' vtitle='Kids video'> 
<descr><![CDATA[this is nice]]></descr> 
</vids> 
<comment allow='no'></comment> 
</vidlist> 
+0

編輯:花了大量的時間和打破我的頭試圖弄清楚這一點之後,我總算得到它的工作。 –

+0

...但我還是不明白這種馬車行爲的原因。爲了使它工作,我不得不從我的數據庫中刪除整個<?xml ... encoding聲明行,然後在我的ajax函數中插入$ .parseXml()... var xmlDoc = $。parseXML(results); $ myxml = $(xmlDoc); $(「#uservidshow」)。text(「Page Title:」+ $ myxml.find(「vidlist」)。attr(「title」)); –

回答

0

您還沒有發佈的數據正確

使用此代碼

$.ajax({ 
url: 'userlist.php', 
       type: 'post', 
       data: {'id=': extr}, 
       dataType: "xml", 
        ..... 

,或者您可以使用

$.ajax({ 

       type: 'GET', 
       url: 'userlist.php?id='+extr, 
       dataType: "xml", 
        ..... 
+0

謝謝,但我沒有在POSTING數據(ID)的麻煩。問題是隻有在閱讀我的xml的時候。這也只是「部分」的XML數據沒有被jQuery讀取 –