我有一个Sijax comet调用,它的工作并不一致。当它正常工作时,所有回调和数据刷新都正常,但随后它将突然停止发出请求(例如,sijax.is_sijax_请求将为false)。我无法找出间歇性工作的原因。 有几次我尝试在页面上添加警报,这再次触发了Sijax调用,几次运行后,Sijax停止工作。有一次我尝试安装flask Sijax模块,这使得它可以运行几次。但现在我正在尝试所有这些,但没有任何东西触发Sijax
这是comet.html
<html>
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="/static/js/sijax/sijax.js"></script>
<script type="text/javascript" src="/static/js/sijax/sijax_comet.js"></script>
<script type="text/javascript">
{{ g.sijax.get_js()|safe }}
</script>
</head>
<body>
<div id="progressWrapper" style="height: 22px; width: 400px; border: 1px solid #e0e0e0; margin-bottom: 10px;">
<div id="progress" style="width: 0px; height: 100%; background-color: #72cd52; display: block;">
</div>
<div class="processing" id ="processing" ></div>
</div>
<br>
<button id="btnStart" onclick="callSijax();">Start</button>
<script type="text/javascript">
//$('#btnStart').bind('click', function () {
function callSijax() {
$('#progress').css('width', 0).html(' ');
//sleep time is 500ms
//alert("calling sjxComet Request");
sjxComet.request('do_work', [0.5]);
}
</script>
</body>
</html>
这是comet.py
# -*- coding: utf-8 -*-
import os, sys
path = os.path.join('.', os.path.dirname(__file__), '../')
sys.path.append(path)
from flask import Flask, g, render_template
import flask_sijax
app = Flask(__name__)
app.config["SIJAX_STATIC_PATH"] = os.path.join('.', os.path.dirname(__file__), 'static/js/sijax/')
app.config["SIJAX_JSON_URI"] = '/static/js/sijax/json2.js'
flask_sijax.Sijax(app)
def comet_do_work_handler(obj_response, sleep_time):
for i in range(6):
width = '%spx' % (i * 80)
counter = '%s %% Complete' % (i * 10)
obj_response.css('#progress', 'width', width)
obj_response.html('#progress', width)
obj_response.html('#processing', counter)
yield obj_response
if i != 5:
time.sleep(sleep_time)
@flask_sijax.route(app, "/")
def index():
if g.sijax.is_sijax_request:
# The request looks like a valid Sijax request
# Let's register the handlers and tell Sijax to process it
print("calling comet")
g.sijax.register_comet_callback('do_work', comet_do_work_handler)
return g.sijax.process_request()
return render_template('comet.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8050, debug=True)
目前没有回答
相关问题 更多 >
编程相关推荐