2016-02-25 21 views
1

我有一個頁面每4秒用Ajax調用一次PHP腳本。 PHP腳本回顯了一些文本,然後將其放在頁面上的div中。 (PHP腳本確實連接到MySQL服務器,這可能是我的問題下面的原因?)Ajax PHP - 如果DOM Explorer打開(邊緣),結果只會被回顯

這是奇怪的部分。第一次調用PHP腳本時,它能夠很好地迴應所有文本。但是,在4秒後,當Ajax再次調用PHP腳本時,頁面變爲空白。爲了讓事情更奇怪,當我右擊MS Edge上的View Source時,所有的頁面內容都會被加載,然後如果我關閉了源代碼,4秒後它又會消失。

有誰知道爲什麼會發生這種情況?

我的JS文件使用Ajax:

function updateCandles(){ 
    var candleIndexStart = $('#candle-index-start').text(); 
    var candleSort = $('#candle-sort').text(); 
    var resultArray = $.ajax({ 
     type: 'GET', 
     url: 'php/display_candles.php', 
     data: { 
      'sort': candleSort, 
      'candle-start': candleIndexStart 
     }, 
     async: false 
    }).responseText.split("h8ktncuidabciafvabc7932hcueqbc73gd8713gdy713gd6831df8136fd13d"); 
    $('.candles').html(resultArray[0]); 
    $('#candle-counter').html(resultArray[1]); 
    setTimeout(updateCandles, 4000); 
} 

$(document).ready(function(){ 
    updateCandles(); 
}); 

我的PHP腳本:

<?php 

session_start(); 

function timeAgo($time_ago) 
{ 
    $time_ago = strtotime($time_ago); 
    $cur_time = time(); 
    $time_elapsed = $cur_time - $time_ago; 
    $seconds = $time_elapsed ; 
    $minutes = round($time_elapsed/60); 
    $hours  = round($time_elapsed/3600); 
    $days  = round($time_elapsed/86400); 
    $weeks  = round($time_elapsed/604800); 
    $months  = round($time_elapsed/2600640); 
    $years  = round($time_elapsed/31207680); 
    // Seconds 
    if($seconds <= 60){ 
     return "just now"; 
    } 
    //Minutes 
    else if($minutes <=60){ 
     if($minutes==1){ 
      return "one minute ago"; 
     } 
     else{ 
      return "$minutes minutes ago"; 
     } 
    } 
    //Hours 
    else if($hours <=24){ 
     if($hours==1){ 
      return "an hour ago"; 
     }else{ 
      return "$hours hrs ago"; 
     } 
    } 
    //Days 
    else if($days <= 7){ 
     if($days==1){ 
      return "yesterday"; 
     }else{ 
      return "$days days ago"; 
     } 
    } 
    //Weeks 
    else if($weeks <= 4.3){ 
     if($weeks==1){ 
      return "a week ago"; 
     }else{ 
      return "$weeks weeks ago"; 
     } 
    } 
    //Months 
    else if($months <=12){ 
     if($months==1){ 
      return "a month ago"; 
     }else{ 
      return "$months months ago"; 
     } 
    } 
    //Years 
    else{ 
     if($years==1){ 
      return "one year ago"; 
     }else{ 
      return "$years years ago"; 
     } 
    } 
} 

$connection = mysqli_connect("localhost", "username", "pass", "db"); 

if(!$connection) { 
    echo "Error"; 
} 

if($_GET['teacher'] == 'yes'){ 
    $result2 = mysqli_query($connection, "SELECT * FROM candles WHERE approved=0 ORDER BY date desc LIMIT " . $_GET['candle-start'] . ",20"); 
} else { 
    $result2 = mysqli_query($connection, "SELECT * FROM candles WHERE approved=1 ORDER BY date " . $_GET['sort'] . " LIMIT " . $_GET['candle-start'] . ",20"); 
} 

if(mysqli_num_rows($result2) > 0) { 
    $counter = 0; 
    while($row = mysqli_fetch_assoc($result2)) { 
     $counter = $counter + 1; 
     if($counter % 2 == 1){ 
      echo "</div>"; 
      echo "<div class='candle-row'>"; 
     } 
     if($row["approved"] == 1 and $_GET['teacher'] == 'yes') { 
      continue; 
     } 
     echo "<div class='candle'><div class='candle-icon'>"; 
     echo '<span class="fa-stack fa-4x"><i class="fa fa-square-o fa-stack-2x"></i><i class="fa fa-' . $row["candle_icon_type"] . ' fa-stack-1x" style="color: ' . $row["colour"] . '"></i></span></div>'; 
     echo '<div style="display:table;height:100%;"><div style="display:table-cell;vertical-align:middle;"><div>'; 
     echo "<h3><a href='candle.php?id=" . $row["id"] . "'>For " . ucwords($row["title"]) . "</a></h3>"; 
     echo "<br>"; 
     $result3 = mysqli_query($connection, "SELECT * FROM users WHERE id=" . $row['user_id'] . " LIMIT 1"); 
     if(mysqli_num_rows($result3) > 0) { 
      while($row1 = mysqli_fetch_assoc($result3)) { 
       if($row["anonymous"] == 1 and $_SESSION["user_group"] == '1'){ 
        echo "<h4><a href='candle.php?id=" . $row["id"] . "'>Shared by an Anonymous User<br>"; 
       } else { 
        echo "<h4><a href='candle.php?id=" . $row["id"] . "'>Shared by " . $row1["username"] . "<br>"; 
       } 
      } 
     } else { 
      echo "<h4><a href='candle.php?id=" . $row["id"] . "'>Shared by Unknown<br>"; 
     } 
     echo "Shared " . ucwords(timeAgo($row["date"])) . "<br>" . $row['fuel'] . " Fuel</a></h4></div></div></div>"; 
     echo "</div>"; 
    } 
} 

echo "h8ktncuidabciafvabc7932hcueqbc73gd8713gdy713gd6831df8136fd13d"; 

if($_GET['teacher']) { 
    $result1 = mysqli_query($connection, "SELECT id FROM candles WHERE approved=0"); 
} else { 
    $result1 = mysqli_query($connection, "SELECT id FROM candles WHERE approved=1"); 
} 

if(mysqli_num_rows($result1) == 0){ 
    echo '0 Candles'; 
} elseif(mysqli_num_rows($result1) == 1){ 
    echo '1 Candle'; 
} else { 
    echo mysqli_num_rows($result1) . ' Candles'; 
} 

mysqli_close($connection); 

?> 
+0

對不起,忘了,現在編輯。 – Th3Gam3rz

回答

0

是,EDGE似乎錯過console對象時,你沒有打開它(的DOM瀏覽器如你所說)。當您的console已關閉時,它不會「存在」,因此EDGE將拋出一個您無法看到的錯誤,因爲您的console已關閉。

聽起來很奇怪嗎?歡迎來到Microsoft創建邏輯)!

我想你在代碼中使用console.log()方法。所以無論您刪除console.log()來電或你把這個解決方法,您的JavaScript的頂部:

if (!window.console) window.console = {}; 
if (!window.console.log) window.console.log = function() { }; 
+0

我不太清楚我的代碼中的哪些部分應該放在您提供的代碼中的函數中。我用我現在的代碼更新了我的問題。 – Th3Gam3rz

+0

@ Th3Gam3rz只是把它放在第一個JavaScript行。這真的是你使用的所有代碼嗎?因爲你在提供的代碼中沒有'console'。 –

+0

是的,這是代碼。我將你提供的兩行添加到JS文件的開頭,沒有什麼不同。 – Th3Gam3rz