【问题标题】:Reading XML string from database and parse using Jquery从数据库中读取 XML 字符串并使用 Jquery 进行解析
【发布时间】:2012-10-07 00:06:45
【问题描述】:

这是我的html页面中的一段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";
            }           

?>

        

--- 这是存储在数据库中列名“pagecontent”下的 XML 字符串---

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

【问题讨论】:

  • 编辑:在花了很多时间并试图弄清楚这一点之后,我设法让它工作了。
  • ...但我仍然不明白这种错误行为的原因。为了使它工作,我必须从我的数据库中删除整个

标签: jquery xml


【解决方案1】:

您没有正确发布数据

使用此代码

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

或者你可以使用

 $.ajax({

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

【讨论】:

  • 谢谢,但我在发布数据(id)时没有问题。问题仅在阅读我的 xml strng 时出现。同样,只有“某些”部分的 xml 数据没有被 jquery 读取
猜你喜欢
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多