0

「.page」ボタンをクリックすると、news.php スクリプトのコンテンツが「#newsdiv」に表示されません。ブラウザで 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

root/ajax.executable.files/news.php と php スクリプト

root/jscripts/news.js と news.php を使用するための js

スクリプトが使用しているすべてのファイル

4

2 に答える 2

2

そうしないと、クリックがreturn false;階層を上に伝播し、HREF 値がある場合 (または空の場合でも)、ページがリロードされます。

したがって、$.ajax({...});areturn 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>内にa があるため、実際には 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 に答える