0

我遇到了问题,当我单击“.page”按钮时,news.php 脚本的内容没有出现在“#newsdiv”中。Firebug 没有说有一些错误,当我在浏览器中运行 news.php 时,它很容易给我来自 MySQL 的数据,所以这是 js 错误,我找不到出错的地方,有人可以帮助我吗?

刚刚写了一些代码:

$(document).ready( function() {
        $('a.page').click(function() {
            var value = $(this).text();
            var result = null; 
            var scriptURL = "/ajax.executable.files/news.php?page=" + value; //url for ajax
            $.ajax({
                url: scriptURL,
                type: 'get',
                dataType: 'html',
                async: true,
                success: function(data) {
                        $('#newsdiv').html(data);   
                } 
            });
        });
});

PHP:

<?php
    mysql_connect('xxx', 'xxx', 'xxx');
    mysql_select_db('xxx');
    mysql_query('SET NAMES \'utf8\'');
    mysql_query("SET NAMES utf8");
    mysql_query("SET CHARACTER SET utf8");
    mysql_query("SET collation_connection = utf8_polish_ci");
    
    if(isset($_GET['page'])){
        $page = mysql_real_escape_string($_GET['page']);
    }
    else{
        $page = 1;
    }
    
    $page = $page - 1;
    $ile = 2;
    
    $od = $page * $ile;
    
    $sql = "SELECT * FROM xxx LIMIT $od, $ile";
    $sql = mysql_query($sql) or die(mysql_error());
    
    while($row = mysql_fetch_array($sql)){
        ?>
        <div class="newsholder">
                <div class="newsheader">
                    <h1><?php echo $row['title']; ?></h1>
                    <h2><?php echo $row['subtitle']; ?></h2>
                </div>
                <div class="newscontent">
                    <div class="<?php $result = $id % 2; if($result != 0){ echo("rightsideimg"); } else{ echo("leftsideimg"); } ?>">
                        <img src="<?php echo $row['image']; ?>" />
                    </div>
                    <div class="<?php $result = $id % 2; if($result != 0){ echo("leftsidesontent"); } else{ echo("rightsidecontent"); } ?>">
                        <?php echo $row['content']; ?>
                    </div>
                    <div class="clearfix"></div>
                </div>

                <div class="newsfooter">
                    <div class="newsgooterright">
                        <div class="button">
                            Czytaj wiecej
                        </div>
                    </div>
                    <div class="newsgooterleft">
                        <small>napisal <b><?php echo $row['author']; ?></b> dnia 26-11</small>
                    </div>
                </div>
            </div>
        <?php
    }
    
    
    
    
    

?>

和用于制作按钮的 php

<?php
                    $offset = ceil($count / $ile);
                    for($i = 1; $i <= $offset; $i++){
                        echo("<a class=\"page\" href=\"javascript:void(0);\"><div class=\"page\">" . $i . "</div></a>");
                    }
                ?>

所有文件的放置如下:

root/index.php 包含要单击的元素

带有 php 脚本的 root/ajax.executable.files/news.php

root/jscripts/news.js 和 js 用于使用 news.php

脚本正在使用的所有文件

4

2 回答 2

2

您必须return false;在点击事件内部,否则点击会向上传播层次结构,如果有任何 HREF 值(或者即使为空),它将最终重新加载页面。

所以,在$.ajax({...});做一个return false;和事情之后应该没问题。

编辑:

将上面的脚本更改为以下内容并查看:

$(document).ready( function() {
    $('a.page').click(function() {
        var value = $(this).text();
        var scriptURL = "/ajax.executable.files/news.php?page=" + encodeURIComponent(value); //url for ajax
        $.ajax({
            url: scriptURL,
            type: 'get',
            dataType: 'html',
            async: true,
            success: function(data) {
                    $('#newsdiv').html(data);   
            } 
        });
        return false;
    });
});

另一个编辑:

由于标签<div>内部有一个,实际上将返回一个值而不是 1。因此,也删除该标签并使最后一个代码部分如下所示:avalue = $(this).text()<div>1</div><div>

for($i = 1; $i <= $offset; $i++) {
    echo("<a href=\"\" class=\"page\" onclick=\"return false;\">".$i."</a>");
}

那应该确保 ajax url 是..../news.php?page=$i.

于 2012-12-05T19:04:15.373 回答
0

进行以下更改 -

$('a.page').click(function(event) { // pass event to the function
    event.preventDefault(); // prevent the default action of the click
    var value = $(this).text();

单击该链接会将您带到一个新页面,这就是为什么您的控制台中没有结果以及 div 没有填充的原因。

于 2012-12-05T19:06:55.623 回答