2012-10-29 84 views
0

我有有一個div一個PHP頁面,該div有一個PHP包括包括本文件:加載內容包括

<?php 
    include('mySql.php'); 
    include('Classes.php'); 

    $targetPage = "blogOutput.php"; 
    $noOfPosts = getNumberOfPosts(); 
    $adjacents = 3; 
?> 
<link rel="stylesheet" type="text/css" href="Styles/Miniblog.css" /> 
<script src="Scripts/jQuery.js"></script> 
<script type="text/javascript"> 
    var page = 1; 
    $(".Button").click(onClick()); 
    $(document).ready(onClick()); 

    function onClick() { 
     alert('called'); 
     $("#posts").load("miniBlog.php", function(response, status, xhr) { 
      if (status == "error") { 
       var msg = "Error!: "; 
       alert(msg); 
      } 
     }); 
     page++; 
    } 

</script> 
<div class="PostTitle"> 
    <h2>What's New!?</h2> 
</div> 
<div id="posts"> 
</div> 
<a class="BlogButton" href="">Next</a> 

我需要的功能「點擊」被稱爲無刷新該頁面並重置JavaScript中的「頁面」變量。到目前爲止,我所能做的就是讓它運行腳本一次。我認爲這也是錯誤的,因爲它沒有加載任何內容。這裏的頁面:

<?php 
    echo "I'm here!"; 
    if (isset($_POST['offset'])) { 
     $offset = $_POST['offset']; 

     $posts = getPosts($offset); 
    } 
?> 

<div class="BlogPost"> 
    <h3><?php echo $posts[0]->Title; ?></h3> 
    <p><?php echo $posts[0]->Body; ?></p> 
    <p class="Date"><?php echo $posts[0]->Date; ?></p> 
</div> 
<div id="divider"></div> 
<div class="BlogPost"> 
    <h3><?php echo $posts[1]->Title; ?></h3> 
    <p><?php echo $posts[1]->Body; ?></p> 
    <p class="Date"><?php echo $posts[1]->Date; ?></p> 
</div> 

因此,要澄清:我不知道爲什麼我的ajax調用不工作,我不知道如何加載只在div內容,而不是刷新整個頁面。謝謝!

回答

1

您無法看到AJAX加載的內容,因爲只要單擊錨點,頁面就會重新加載。通過使用preventDefault()來禁用錨點事件,這應該可以解決它。

<script type="text/javascript"> 
    var page = 1; 
    $(document).on('click','.BlogButton',function(e){ 

     // stop page from reloading 
     e.preventDefault(); 

     $("#posts").load("miniBlog.php", function(response, status, xhr) { 
      if (status == "error") { 
       var msg = "Error!: "; 
       alert(msg); 
      } 
     }); 
     page++; 
    }); 
</script> 
+0

這很好用,非常感謝你! – Jack

0

不要調用click方法參數中的函數。你必須把引用放到處理函數中。

var handler = function onClick() {...} 

$("whatever").click(handler); 
0

更改您的代碼

var page = 1; 

$(document).ready(function(){ 
    $(".Button").click(onClick); 
    onClick(); 
}; 
0

使用此,而不是你的代碼

var page = 1; 
$(document).on('click','.Button',function(){ 

    $("#posts").load("miniBlog.php", function(response, status, xhr) { 
     if (status == "error") { 
      var msg = "Error!: "; 
      alert(msg); 
     } 
    }); 
    page++; 
}); 
0

內容劑量不會顯得太huge.Can't你只是隱藏的div(與內容已存在在它)&顯示onclick。