JQuery没有改变偶数链接的div内容?

时间:2013-11-26 11:40:57

标签: javascript php jquery html

感谢您花时间看这篇文章。

所以我设法完成了我的任务。 我从名为posts的数据库中提取数据,其中包含以下字段:id, account_name, data, heading, subheading, videos, voice_notes, music, images, post_date, date_for_post

所以这是一个过程: 1 - 从db中提取数据并放入数组 2 - 从带有链接的数组中创建无序列表 3 - 单击链接时,使用该帖子数据填充内容div。

现在它将在奇数编号的链接上加载特定的帖子数据,但在偶数编号的链接上它不会将数据加载到容器中?使用相同的方法?我已经重新排序了这些列表,但是,即使是编号的列表项也无法正常工作。我做错了吗?

我还尝试在帖子之间添加一个空白列表项,看看它是否是没有调用该函数的列表项,但它似乎只是偶数链接。

我不知道如何解释它,这是我的代码:

<?php
$connection=mysql_connect('localhost', 'username', 'password');
if (!$connection) {  die('Not connected : ' . mysql_error());} 
// Set the active MySQL database
$db_selected = mysql_select_db('dbname', $connection);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
} 

$query = "SELECT * FROM posts";
$result = mysql_query($query);

if(!$result){
    die('Invalid query' . mysql_error());
}

$posts = array();
while($line = mysql_fetch_array($result, MYSQL_ASSOC)){
    $posts[] = $line;
}
?>
<!doctype html>
<html>
<head>
    <script type="text/javascript" src="js/ajax.js"></script>
    <script type="text/javascript" src="js/content.js"></script>
</head>
<body>
<div id="content">some data</div>

<div id="links">
    <ul>
    <?php
        foreach ($posts as $post) {
            $data =  "'".$post['data']."'";
            echo '<li><a href="#" onclick="getContent(\'#content\', '. $data .');">'. $post['date_for_post'] .'</a></li>';
        }
    ?>
    </ul>
</div>
</body>

和getContent函数:

function getContent(element, data){
$(element).text(data);
}

我无法弄清楚原因。这里是发生什么的图形表示: page loads first link pressed, post loads second link is pressed, post id not loaded third link is pressed, post is loaded fourth link is pressed, post is not loaded see, there are posts in the database

我已经尝试插入黑名单项目以查看它是否是实际的偶数列表项目没有调用该函数,但它是内部内容的偶数列表项目不起作用,如果这有意义吗?

请帮助,因为我不知道发生了什么以及如何解决它。

提前致谢!

更新

似乎是较长的帖子不显示,越短越好。我将数据库中的数据类型设置为text,而不是varchar。那么尺寸问题在哪里?我可以通过JQuery函数获得最大大小吗?还是在数据库中?因为它显示在数据库中,但不在帖子上

2 个答案:

答案 0 :(得分:2)

我认为问题在于代码中的引号和双引号:

$data =  "'".$post['data']."'";
echo '<li><a href="#" onclick="getContent(\'#content\', '. $data .');">'.$post['date_for_post'] .'</a></li>';

检查生成的HTML页面的来源。应该有不正确的'li'标签。我建议您将代码更改为:

$data =  $post['data'];
echo '<li><a href="#" onclick="getContent(\'#content\', \''. $data .'\');">'.$post['date_for_post'] .'</a></li>';

希望它有所帮助。

另外,检查数据库中文本中的引号是否导致此问题。

答案 1 :(得分:0)

很难看到发生了什么,试着提供一个jsfiddle。即使您使用的是php,也可以创建json数据的手动提要并测试javascript。为了减少混淆,请将数据存储在...

<script>
    $(document).ready(function () {
        var dbObj = <?php $post ?>  // $post object to be formatted in json
        var render;
        for (obj in dbObj) {
            render = render + '<li><a href="#" onclick=getContent("#content", ' + obj.data + '");>' +obj.date+ '</a></li>'
        $('#links ul').append(render);
    });
</script>

如果可以,你真的想让php打印出列表,那么你可以用php foreach替换它;这些天,开发人员允许客户端渲染模板/ html,至少你会知道js以这种方式工作! : - )

   <?php
        foreach ($posts as $post) {
            echo '<li><a href="#" onclick=getContent("#content", "'. $post["data"] .'");>'. $post['date_for_post'] .'</a></li>';
        }
    ?>