【问题标题】:.append() with Database.append() 与数据库
【发布时间】:2012-10-31 19:52:47
【问题描述】:

我正在尝试从我的数据库中检索信息,并将其输出到我的页面。我能够对其进行硬核,因此要准确显示我想要做的事情位于此处:

我在 javascript 中没有任何控制台错误,但是一旦单击它,我就无法将数据附加到列表中。

HTML 和 JS:

<!doctype html><html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="../img/sd.ico" />
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>  
</head>
<body>
<div id="body">
<div id="header"><h1><a href="#">Bookmarks</a></h1></div><!-- header -->
<iframe id="iFrame" name="iFrame"></iframe>
<div id="links"><ul id="accordion">

<li><div class="bookmarkTitle"><p><h4>CareerResources</h4></p></div></li><ul id="CareerResources">

</ul><li><div class="bookmarkTitle"><p><h4>CSS</h4></p></div></li><ul id="CSS">

</ul><li><div class="bookmarkTitle"><p><h4>JS</h4></p></div></li><ul id="JS">

</ul><li><div class="bookmarkTitle"><p><h4>JS: Jquery</h4></p></div></li><ul id="JS: jQuery">

</ul></div><!-- links end -->
</div><!-- body end -->
<script type="text/javascript">
$(document).ready(function(){       
    $("#accordion > li").click(function(e){
        var catName=$(e.target).text();
        $.getJSON("get.php?catName=" + catName, function(data){ 
            if (data.data){ 
                $.each(data.data,function(index,value){ 
                    var url = value.URL; 
                    var title = value.title; 
                    var desc = value.desc; 
                    alert(catName);
                    $("#"+catName).append('<a href="'+url+'" target="iFrame"><div class="bookmark"><p><h3>'+title+'</h3><br />'+desc+'</p></div></a>'); 
                }); 
            } 
        });
    }); 
}); 
</script>
</body>
</html>

PHP:

// retval: 0 - login ok, 1 - login failed, 2 - internal error
$json = array("retval" => 2, "data" => NULL, "debug" => "");

$catName=mysql_real_escape_string($_REQUEST['catName']);


$sql="SELECT * FROM linktb WHERE catName='$catName'";

$json['debug'] .= "SQL query was: ".$sql."\n";
$result=mysql_query($sql);
if (!$result) {
    $json['debug'] .= "SQL query failed\n";
    $json['debug'] .= "Other output: ". ob_get_contents();
    ob_end_clean();
    die(json_encode($json));
}
$count=mysql_num_rows($result);

if($count > 0){ 
$json['retval'] = 0; 
$json['data'] = array(); 
while ($row = mysql_fetch_assoc($result)){ 
$json['data'][] = $row; 
} 
} else { 
$json['retval'] = 1; 
}

$json['debug'] .= "Other output: ". ob_get_contents();
ob_end_clean();
echo json_encode($json);

【问题讨论】:

  • 在此处插入通用请求以停止使用mysql_ 函数。
  • 您是否在数据库中交叉检查查询?运行成功?
  • 好像catID是空的,试着只输出catId看是内容。
  • data$.each(data,function(index,value){ 中的定义在哪里?还有$.each的目的是什么?
  • @sayannayas 我将查询输入到数据库中,它确实有效。

标签: php jquery database json


【解决方案1】:

var catID=e.target.text(); 应该是var catID=$(e.target).text(); 因为.text() 是一个jQuery 方法。

如果您想遍历返回的数据,您必须在成功函数中进行。同样,从您的 php 脚本中,您只能从数据库中输出一行。

if($count > 0){ 
    $json['retval'] = 0; 
    $json['data'] = array(); 
    while ($row = mysql_fetch_assoc($result)){ 
        $json['data'][] = $row; 
    } 
} 
else { 
    $json['retval'] = 1; 
}
$.getJSON("get.php?catID=" + catID, function(data){ 
    if (data.data){ 
        $.each(data.data,function(index,value){ 
            var url = value.URL; 
            var title = value.title; 
            var desc = value.desc; 
            $("#"+catID).appendText('<a href="'+url+'" target="iFrame"><div class="bookmark"><p><h3>'+title+'</h3><br />'+desc+'</p></div></a>'); 
        }); 
    } 
});

【讨论】:

  • 已更新,但仍然没有结果。
  • 更新了代码,我也上传了现在的样子samaradionne.com/links2为什么那个查询只会输出一行?还是你指的是我的调试。
  • @Phawkes 你只取一行,见这里$json['data'] = mysql_fetch_assoc($result);
  • 啊,我明白了,话虽如此,我什至没有显示一行的结果。
  • @Phawkes 可能是因为您的查询结果不止一行。你检查计数,如果它是 1 然后你分配它。$count=mysql_num_rows($result); if($count==1){ $json['retval'] = 0; $json['data'] = mysql_fetch_assoc($result); }
猜你喜欢
  • 2014-01-08
  • 2011-03-02
  • 2013-04-02
  • 2019-06-06
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 2013-08-06
相关资源
最近更新 更多