2013-02-19 50 views
0

當我在由jQuery異步加載的文件中生成PHP時,文本似乎在動畫運行時抖動或閃爍一點。這不會發生在所請求的文件中的常規HTML中,只有使用PHP生成的內容。爲什麼PHP生成的內容在通過jQuery加載時會產生抖動,我該如何解決?

只是想知道什麼可以結束抖動。

這裏是jQuery的在main.php

$(document).ready(function(){ 
    var demo = $('#demo'); 
    demo.hide(); 
    $("button").click(function(){ 
     demo.load('demo.php', function() { 
     demo.show('medium'); 
     }); 
    }); 
}); 

這裏是demo.php HTML和PHP:

<p><?php echo "Hello World with PHP trough AJAX"; ?></p> 

我真的不能確定從哪裏開始。我應該避免全部使用demo.php中的PHP嗎?即使如此,我真的很想有可能在使用PHP的腳本中調用谷歌AJAX。

根據要求,這裏是整個混賬東西:

main.php

<!DOCTYPE html> 
<html> 
<head> 
    <title>Testing Ajax</title> 
    <link rel="stylesheet" type="text/css" href="main.css" /> 
    <meta charset="utf-8" /> 
    <script type="text/javascript" src="js/jquery-1.9.0.js"></script> 
    <script> 
     $(document).ready(function(){ 
      var demo = $('#demo'); 
      demo.hide(); 
      $("button").click(function(){ 
       demo.load('demo.php', function() { 
        demo.show('medium'); 
       }); 
      }); 
     }); 
    </script> 
    <style type="text/css"> 
     #demo {background-color: MidnightBlue;color: white;padding: 0.1em 1em 1.5em 1.5em;} 
     #demo h1 {color: white;} 
    </style> 
</head> 
<body> 
    <section> 
     <article> 
      <h1>Ajax</h1> 
      <hr /> 
      <button>Load External Content</button> 
      <div id="demo"></div> 
     </article> 
    </section> 
</body> 
</html> 

(我喜歡黑藍比矢菊花更好...)

demo.php

<h1>Ajax criex Hello World!</h1> 
<p><?php echo "PHP also cries Hello World trough Ajax!"; ?></p> 
+0

* Asnwer刪除Q *:是的,但只有在腳本被jQuery加載時纔會生成PHP。這就像服務器突然想起的那樣:「哦,我還需要添加PHP生成的內容。啊,只是做到了!」沒有什麼可以展示的。只需在PHP旁邊添加一些靜態測試HTML,並在調用時看到呈現效果。 – Kebman 2013-02-19 21:48:44

+0

你甚至沒有在你提供的代碼中使用AJAX。 – Killrawr 2013-02-19 21:50:30

+3

@Killrawr - 'jQuery.load'是一個AJAX請求的別名API – 2013-02-19 21:51:28

回答

1

從技術上講,絕對沒有d使用PHP生成的文本與使用ASP.net生成的文本與包含在.txt文件中的文本之間的差異與鍵盤上鍵入的文本之間的差異 - 這些都是字母和數字。事實上,我會盡可能地說,在沒有其他線索的情況下檢查文本,完全不可能說出它是如何創建的。不,你不應該通過AJAX避免PHP。

任何「抖動」,你看到的是一些其他問題的產品,最有可能與瀏覽器的性能 - 處理器可用,可用內存,當前進程的內存消耗,延長活動/與頁面內容干擾等

+0

那麼爲什麼只有PHP生成的內容在demo.php中抖動,而不是其他內容在同一個文件中? – Kebman 2013-02-19 21:55:02

+0

同樣,還有一些其他技術原因。沒有其他細節,很難說。服務器是否是本地主機? 「抖動」是什麼意思? 事情是... AJAX被互聯網上數以千計的主要網站使用,其中包括谷歌和蘋果等主要玩家。這是一種行之有效的技術,一般來說,絕對不會導致瀏覽器中的視覺顯示問題。 – 2013-02-19 21:56:52

+0

是的,它是我的Core2 Duo MacBook上的本地主機,具有MySQL/Apache安裝。它在FireFox上最不明顯,但在Chrome和Safari中表現得非常好。 – Kebman 2013-02-19 22:08:05

1

我不知道這是否會幫助你。如果上面顯示的代碼是really所有代碼,可能不會。

但是:有一段時間,當我通過Ajax加載內容時,動畫中還出現抖動問題。原因是:加載的內容包含其他動畫命令的Javascript代碼,然後干擾這兩個動畫。也許這也是這種情況。

1

在我的測試,同時試圖重現「抖動」你的代碼產生無限AJAX循環(查看它在Web控制檯,你看到的)多數民衆贊成在最有可能的抖動效果:

繼承人基本的PHP和AJAX的例子:

<?php 
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest' && $_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['action'])){ 
    $action = $_POST['action']; 
    switch($action){ 
     case "hello": 
      echo "Hello World with PHP through AJAX"; 
      break; 
     case "foobar": 
      echo "Hello Foobar"; 
      break; 
    } 
    die; 
} 
?> 

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 
      var action = this.value; 
      ajaxload('demo',action); 
    }); 
}); 
function ajaxload(placement,action){ 
    $.post("./demo.php", { 'action': action }, 
    function(data) { 
     $("#"+placement).hide().html(data).fadeIn('slow'); 
    }); 
} 
</script> 


<button type="button" value="hello">Hello World</button> 
<button type="button" value="foobar">Foobar</button> 


<p id="demo"></p> 
+0

大聲笑,問題是...你怎麼結束抖動? – Kebman 2013-02-19 22:28:46

相關問題