2016-12-27 44 views
0

我有一個使用JqueryUI-Mobile(更具體地說是listview)和PHP以及一些Ajax代碼的頁面。使用Ajax刷新整個頁面的問題

頁面加載從MySQL數據庫生成的列表,然後我希望該列表自行刷新,而不刷新頁面(以獲得更好的用戶體驗)。

目前,我能夠使用.load來刷新數據,但是我有一個奇怪的副作用。

在頁面加載時,它呈現正確。我猜是因爲它首先加載正確的方式。但是,一旦ajax .load調用進來,它會加載div內的整個頁面,而不僅僅是div內的內容。任何人都可以看到我做錯了什麼?或者推薦正確的方法來做到這一點,如果我不是不正確地做到這一點?

這是我的代碼。

<?php 
session_start(); 
if(isset($_SESSION['username'])) 
{ 

} 
else 
{ 
$_SESSION['error']="You are logged in."; 
header('Location: index.php'); 
    exit; 
} 

?><!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/> <!--320--> 
<link rel="stylesheet" href="js/jquery.mobile-1.4.5.min.css"> 
<script src="js/jquery-1.11.3.min.js"></script> 
<script src="js/jquery.mobile-1.4.5.min.js"></script> 

<script> 

function myFunction(){ 
    $(".ui-content").load("thispage.php"); 
} 
$(document).ready(function() { 
    setInterval(myFunction, 1000); 
}); 
</script> 
<style> 
.split-custom-wrapper { 
    /* position wrapper on the right of the listitem */ 
    position: absolute; 
    right: 0; 
    top: 0; 
    height: 100%; 
} 

.split-custom-button { 
    position: relative; 
    float: right; /* allow multiple links stacked on the right */ 
    height: 80%; 
    margin:10px; 
    min-width:3em; 
    /* remove boxshadow and border */ 
    border:none; 
    moz-border-radius: 0; 
    webkit-border-radius: 0; 
    border-radius: 0; 
    moz-box-shadow: none; 
    webkit-box-shadow: none; 
    box-shadow: none; 
} 

.split-custom-button span.ui-btn-inner { 
    /* position icons in center of listitem*/ 
    position: relative; 
    margin-top:50%; 
    margin-left:50%; 
    /* compensation for icon dimensions */ 
    top:11px; 
    left:-12px; 
    height:40%; /* stay within boundaries of list item */ 
} 
.ui-icon-delete:after{ 
    background-color: #B22222 !important; 

background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E") 
} 

.ui-icon-home:after{ 
    background-color: #A2CD5A !important; 

} 
.ui-icon-search:after{ 
    background-color: #3D59AB !important; 

} 

li{ 
border: none !important; 
} 
</style> 
</header> 
    </head><img src="images/kidlinklogo.png" style="width:30%;height:30%;;" alt="" class="logo" /><center> <h2 style="">WALKER DISMISSAL 
    <br><br> 
    </h2></center> 
<a href="home.php" class="ui-btn ui-icon-home ui-btn-icon-left" data-ajax='false'>HOME</font></a> 
<a href="WalkerOther.php" class="ui-btn ui-icon-search ui-btn-icon-left" data-ajax='false'> LIST</a> 
<br><br><br> 
<div id="dovo"> 

</div> 
    <div data-role="main" class="ui-content"style="margin-top:-75px;"> 

    <h2 style=""></h2> 
    <ul data-role="listview"> 

<?php 
include "../../includes/databaseconnections/demo/database_connection.php"; 
/////////////////////////////////////////////////////////////////////////////////////////////// 
/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
else{} 
$query = "SELECT * FROM s WHERE currentZone = '2' and status != '4' ORDER BY lastName ASC LIMIT 100"; 
if ($result = mysqli_query($link, $query)) { 
    /* fetch associative array */ 
    while ($row = mysqli_fetch_assoc($result)) { 

     if ($row[leftGym] == "1") { $flash = "style='color:#B22222;font-size:140%'";} else {$flash ="";} 
      $row['firstName'] = strtoupper($row['firstName']); 
     $row['lastName'] = strtoupper($row['lastName']); 
      echo "<li><a href='PupSelect.php?sid=${row['ID']}' $flash style='font-size:140%;' width='25px' data-ajax='false'>&nbsp; &nbsp; {$row["lastName"]}, {$row["firstName"]}</a><div class='split-custom-wrapper'> 

      <a href='Data.php?sID={$row['ID']}&lane=1{$ID}' data-role='button' class='split-custom-button' data-icon='delete' data-rel='dialog' data-theme='c' data-ajax='false' data-iconpos='notext'></a>   
     </li>"; 
    } 
    /* free result set */ 
    mysqli_free_result($result); 
} 
mysqli_close($link); 

///////////////////////////////////////////////////////////////////////////////// 
?> 
</div></div> 


    </body> 

</html> 

回答

1

我忽略了一個關鍵要求.load。我沒有指定我正在加載的頁面上的內容,因此它正在加載整個頁面。

function myFunction(){ 
    $(".ui-content").load("thispage.php"); 

改爲

function myFunction(){ 
    $(".ui-content").load("thispage.php .ui-content"); 

這解決了問題。