我有这段代码:
<div id="quote">
<p>
Click on image please.
</p>
</div>
<img class="post" src="positif.png" title="rate this positive" onclick="positif(this);">
如果单击图像,它将调用此函数:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var jq = jQuery.noConflict(true);
</script>
<script type="text/javascript">
function positif(obj) {
var url = obj.parentNode.valueOf('href');
var nama = obj.parentNode.innerText;
alert(url);
jq("#quote p").load("retrain/pos.php?url=" + url + "&nama=" + nama);
}
</script>
load
事件调用此pos.php
脚本:
$url = $_GET["url"];
$nama = $_GET["nama"];
$nama2 = str_replace(str_split('\\/:*?"<>|()'), '', $nama);
$post = '../cat/statistika/S_' . $nama2 . '.txt';
$current = file_get_contents($url);
if (file_get_contents($url)) {
$current2 = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $current);
$current3 = preg_replace('#<style(.*?)>(.*?)</style>#is', '', $current2);
$current4 = strip_tags($current3);
$current5 = preg_replace('/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/', '', $current4);
file_put_contents($post, $current5);
echo "Rated positive, Thanks for your response!";
} else {
echo 'Sorry, connection failed. Try again later.';
}
他们工作正常。但是因为我在那里使用file_put_content
,所以需要时间,并且在put_content
成功的时候它不会显示任何“改变”。通过扩展,我必须创建诸如进度条或加载图像,而PHP(或javascript?)正在努力最终显示Rated positive blah2
。
我把它放到了positif(obj)
函数的末尾:
jq('body').ajaxStart(function() {
jq('#loading').show();
}).ajaxComplete(function() {
jq('#loading').hide();
});
以及div
上方的另一个div#quote p
,以及:
<div id="loading">
<img id="loading-image" src="loading_thing.gif" alt="Loading..." style="display: none"/>
</div>
没用。 我在这里没做什么?
答案 0 :(得分:0)
来自ajaxStart doc:
从jQuery 1.8开始,.ajaxStart()方法只应附加到文档。
所以试试:
jq('document').ajaxStart(function() {
jq('#loading, #loading-image').show();
}).ajaxComplete(function() {
jq('#loading, #loading-image').hide();
});
答案 1 :(得分:0)
不要忘记同时显示您的图片占位符
jq('body').ajaxStart(function() {
jq('#loading, #loading-image').show();
}).ajaxComplete(function() {
jq('#loading, #loading-image').hide();
});
答案 2 :(得分:0)
我想如果你把它放在行alert(url);
之后,它会更好用:
jq('#loading').fadeIn(); // Just esthetic, you could use .show()
jq("#quote p").load("retrain/pos.php?url=" + url + "&nama=" + nama,
function () {
jq('#loading').fadeOut(); // Just esthetic, you could use .hide()
});
希望能帮到你。