2016-11-04 65 views
1

我正在摸索与jQuery和Python一点点,我试图显示一个非常简单的页面显示加载IMG,而有点长的Python脚本获取我需要显示的信息。jQuery加载img,而exec Python脚本PHP

当然,当Python脚本准备就绪时,我希望能够隐藏加载图像并在其位置显示Python脚本的结果。

到目前为止,我能够与一些谷歌的帮助,我的网页拼凑这样的:

<html> 
<head> 
    <img id="img" src="loader.gif"> 
    <script src="assets/js/jquery-1.9.1.min.js"></script> 
    <script> 
    $(document).ready(function() { 
     url: "http://localhost/test.py"; 
     $.post(url, function(data){ 
      $("#id").html(data); 
     }); 
    $("#img").hide(); 
    }); 
    </script> 
</head> 
</html> 

任何帮助将greately赞赏。谢谢!

+0

没有ID为“id”的元素 – simon

回答

1

这工作很适合我:

的index.php

<!DOCTYPE html> 
<html> 
<head> 
<title>Python Loading IMG Page</title> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" > 
<script src="src/jquery-1.10.2.min.js" type="text/javascript"></script> 
</head> 
<body> 

<div id="container"> 
    <div id="loading"> 
     <img src="src/loading.gif" alt="loading_icon" /> 
    </div> 
    <div id="results"></div> 
</div> 

<script language="javascript" type="text/javascript"> 
var URL = 'cgi-bin/test.py'; 

function read(){ 
$('#loading').show(); 
$.get(
    URL, 
    {}, 
    function(result){ 
     $('#loading').hide(); 
     $('#results').html(result);  
    }, 
    'text' 
).fail(function() { 
    alert('Wrong Python URL'); 
}); 
} 
read(); 

</script> 
</body> 
</html> 

的cgi-bin/test.py

#!/usr/bin/env python 

print "Content-type: text/html\r\n" 
print "\r\n" 
print "This is where the text goes." 
print "Make sure you use HTML tags." 
2

这部分

$("#id").html(data); 

意味着jQuery是填充的ID“ID”从你的Python脚本响应中的元素。问题是你没有一个有id="id"的元素。

您还想要做的是将$("#img").hide();放在您的成功处理程序$.post的内部。这样,当$.post完成时,图像被隐藏。使用您当前的代码,它会立即隐藏,因为$.post是一个异步请求,因此任何其他代码都不会等待它。

您的代码应该是这个样子:

<html> 
<head> 
    <img id="img" src="loader.gif"> 
    <div id="id"></div> 
    <script src="assets/js/jquery-1.9.1.min.js"></script> 
    <script> 
    $(document).ready(function() { 
     url: "http://localhost/test.py"; 
     $.post(url, function(data){ 
      $("#id").html(data); 
      $("#img").hide(); 
     }); 
    }); 
    </script> 
</head> 
</html> 

注意<div>我添加(你可以用任何你想要的其他HTML元素替换它)。

UPDATE

有你$.post要求因不同原因未能机会。目前,您只有一个成功处理程序,只有在请求成功时才会被调用。您可以添加一个 “不成功” 的处理程序是这样的:

$.post(url, function(data){ 
    $("#id").html(data); 
    $("#img").hide(); 
}) 
.fail(function(response) { 
    alert('Error: ' + response.responseText); 
    // .. do something else .. 
}); 
+0

谢谢西蒙。但是,它似乎并没有隐藏加载图像,也没有输出python文本。是否有可能是因为python文本没有得到输出它卡在那里,为什么它也没有隐藏img? – user5740843