Javascript客户端页面不捕获Python信号

Javascript客户端页面不捕获Python信号,javascript,python,jquery,flask,signals,Javascript,Python,Jquery,Flask,Signals,在我关于事件“连接”的项目中,我发出许多信号: @sock.on( "connect" ) def connectHandler(): logger.info("User logged") for k, v in mapMsg: #mapMsg is a map of msg msg = v.getValuesToString() #msg is a string sock.emit( 'ActionPe

在我关于事件“连接”的项目中,我发出许多信号:

@sock.on( "connect" )
def connectHandler():
    logger.info("User logged")

    for k, v in mapMsg: #mapMsg is a map of msg
        msg = v.getValuesToString()  #msg is a string
        sock.emit( 'ActionPending', {'data': msg}, namespace="/test" )
在index.html中:

{% extends 'base.html' %}
{% block scripts %}
    <script src="//code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>
    <script type="text/javascript" charset="utf-8">
        $(document).ready(function() {
            namespace = '/test'
            var socket = io(namespace);

            socket.on('connect', function() {
                console.log('CONNECT EVENT'); //<-- I READ THIS ON CONSOLE!
            });

        var d=0;
        socket.on('ActionPending', function(msg) {
            console.log("Sono qui con msg: "+msg)  //<--this i dont view!
           if (d > 3 ){
                $('#log4').empty()
               d=0;
           }
           $('#log4').append('<br>' + $('<div/>').text('ActionPending: ' + msg.data).html());
           d++;
            //if (cb)
                //cb();
        });

    <dt><h3>ActionPending:</h3></dt>
    <dd><div id="log4"></div></dd>
{%extends'base.html%}
{%block scripts%}
$(文档).ready(函数(){
命名空间='/test'
var socket=io(名称空间);
socket.on('connect',function(){

console.log('CONNECT EVENT');//除了缺少一些分号和var声明之外,还缺少document.ready函数的右括号和右脚本标记

您遇到的问题是,变量“socket”位于document.ready上调用的匿名函数的命名空间中

“ActionPending”套接字事件是在document.ready函数之外定义的。如果调整代码,使“ActionPending”事件也在document.ready函数内,则代码应按预期工作

{% extends 'base.html' %}
{% block scripts %}
    <script src="//code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>
    <script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
        var namespace = '/test';
        var socket = io(namespace);

        socket.on('connect', function() {
            console.log('CONNECT EVENT'); //<-- I READ THIS ON CONSOLE!
        });

        var d=0;
        socket.on('ActionPending', function(msg) {
            console.log("Sono qui con msg: "+msg);  //<--this i dont view!
            if (d > 3 ){
                $('#log4').empty();
                d=0;
            }
            $('#log4').append('<br>' + $('<div/>').text('ActionPending: ' + msg.data).html());
            d++;
            //if (cb)
                //cb();
        });
    });
    </script>
    <dt><h3>ActionPending:</h3></dt>
    <dd><div id="log4"></div></dd>
{%extends'base.html%}
{%block scripts%}
$(文档).ready(函数(){
变量名称空间='/test';
var socket=io(名称空间);
socket.on('connect',function(){

console.log('CONNECT EVENT');//看起来您的'ready'函数没有右大括号?问题可能是您在页面准备就绪时定义套接字,但socket.on事件处理程序在ready函数之外并且在套接字初始化之前。