当我在由jQuery异步加载的文件中生成PHP时,文本似乎在动画运行时抖动或闪烁。这不会发生在所请求文件中的常规HTML中,而只会发生在使用PHP生成的内容中。
只需要一些关于什么可以结束抖动的提示。
以下是main.php
中的jQuery:
$(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吗?即便如此,我还是希望能够在称为通过AJAX的脚本中使用PHP。
根据要求,这是完整的事情:
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>
(我喜欢MidnightBlue比CornflowerBlue更好......)
demo.php
:
<h1>Ajax criex Hello World!</h1>
<p><?php echo "PHP also cries Hello World trough Ajax!"; ?></p>
答案 0 :(得分:1)
从技术上讲,使用PHP生成的文本与ASP.net中生成的文本与.txt文件中包含的文本与键盘上键入的文本之间的文本完全没有区别 - 它都是字母和数字。事实上,我会尽可能地说,在没有其他线索的情况下检查文本,它完全是100%不可能告诉它是如何创建的。不,你不应该用AJAX来避免使用PHP。
您看到的任何“抖动”都是其他问题的产物,很可能与浏览器性能有关 - 处理器可用性,可用内存,当前进程内存消耗,扩展活动/对页面内容的干扰等。
答案 1 :(得分:1)
我不知道这是否会对你有所帮助。如果上面显示的代码是really
所有代码,可能不会。
但是:一段时间后,当我通过Ajax加载内容时,我在动画中也遇到了抖动问题。原因是:加载的内容包含带有其他动画命令的Javascript代码,然后两个动画都受到干扰。也许这也是这种情况。
答案 2 :(得分:1)
在我的测试中,同时试图重现&#34;抖动&#34;你的代码产生了一个无限的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>