Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 烧瓶;错误:[Errno 32]管道破裂“;当使用;返回重定向(url用于…);_Jquery_Python_Flask - Fatal编程技术网

Jquery 烧瓶;错误:[Errno 32]管道破裂“;当使用;返回重定向(url用于…);

Jquery 烧瓶;错误:[Errno 32]管道破裂“;当使用;返回重定向(url用于…);,jquery,python,flask,Jquery,Python,Flask,我是Jquery新手,正在尝试轮询服务器API以查看变量状态的更改。当我使用“return redirect(url\u for…)”作为返回类型时,除了得到一个“断管”之外,一切都正常 我走错方向了吗?我只想在变量更改时触发主视图,因为计算该视图的对象非常昂贵,并且如果状态相同,则不需要 Python代码: @app.route('/status') def check_deployment_status(): # get all the simpleDB domains #

我是Jquery新手,正在尝试轮询服务器API以查看变量状态的更改。当我使用“return redirect(url\u for…)”作为返回类型时,除了得到一个“断管”之外,一切都正常

我走错方向了吗?我只想在变量更改时触发主视图,因为计算该视图的对象非常昂贵,并且如果状态相同,则不需要

Python代码:

@app.route('/status')
def check_deployment_status():

    # get all the simpleDB domains
    # the list of clusters are used to build the left nav
    clusters = sdb_conn.get_domain('clusters')

    cluster_id = request.args.get('id', '')
    state = request.args.get('state', '')

    # get that cluster from the list of clusters
    cluster=clusters.get_item(cluster_id)

    print "cluster state: " + cluster['state']
    print "dashboard state: " + state

    if cluster['state'] != state:
        return redirect(url_for('cluster', id=cluster_id))
    else:
        return 'this'
jquery代码:

$(document).ready(function() {
    (function poll() {
        setTimeout(function() {
        $.ajax({
            url: "/status",
            type: "GET",
            success: function(data) {
               console.log("polling");
            },
            dataType: "json",
            data: {"id": $('#id').text(), "state": $('#state').text()},
            complete: poll,
            timeout: 2000
        })
        }, 5000);
    })();
});
错误,忘记发布错误:

Exception happened during processing of request from ('127.0.0.1', 56862)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 651, in __init__
self.finish()
  File "/usr/lib/python2.7/SocketServer.py", line 710, in finish
self.wfile.close()
  File "/usr/lib/python2.7/socket.py", line 279, in close
self.flush()
  File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe

是的,我想我是走错了路。最后,我创建了一个URL,并将其作为jquery响应传回,然后用javascript处理重定向。新的jquery函数如下所示:

$(document).ready(function() {
(function poll() {
    setTimeout(function() {
    $.ajax({
        url: "/status",
        type: "GET",
        success: function(data) {
        if (data.redirect) {
            // data.redirect contains the string URL to redirect to
            window.location.href = data.redirect;
        }
            console.log(data.redirect);
        },
        dataType: "json",
        data: {"id": $('#id').text(), "state": $('#state').text()},
        complete: poll,
        timeout: 2000
    })
    }, 5000);
})();
});
python是这样的:

@app.route('/status')
def check_deployment_status():

    # get all the simpleDB domains
    # the list of clusters are used to build the left nav
    clusters = sdb_conn.get_domain('clusters')

    cluster_id = request.args.get('id', '')
    state = request.args.get('state', '')

    # get that cluster from the list of clusters
    cluster=clusters.get_item(cluster_id)

    print "cluster state: " + cluster['state']
    print "dashboard state: " + state

    if cluster['state'] != state:
        #return redirect(url_for('cluster', id=cluster_id))
        return jsonify(redirect=url_for('cluster', id=cluster_id))
    else:
        return 'this'