加载javascript和php脚本时无法显示加载图像

时间:2013-09-09 03:15:29

标签: php javascript jquery html

我有这段代码:

<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>

没用。 我在这里没做什么?

3 个答案:

答案 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()
});
希望能帮到你。