Javascript 从div收集动态文本并通过querystring传递

Javascript 从div收集动态文本并通过querystring传递,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我下载了这个模板,它基本上是python中Tornado的网络聊天室: 我试图从“messsages”div获取所有消息,并将其作为变量“msgs”通过查询字符串传递。我之所以使用querystring,是因为无法在github项目中实现POST函数,而且我无法通过JSON块传递数据,因为我甚至不知道如何开始。一旦msgs通过PHP方式通过querystring传递,我就能够在一个名为“message log”的页面上回显消息 我尝试了以下几点: var msgs = document.getE

我下载了这个模板,它基本上是python中Tornado的网络聊天室:

我试图从“messsages”div获取所有消息,并将其作为变量“msgs”通过查询字符串传递。我之所以使用querystring,是因为无法在github项目中实现POST函数,而且我无法通过JSON块传递数据,因为我甚至不知道如何开始。一旦msgs通过PHP方式通过querystring传递,我就能够在一个名为“message log”的页面上回显消息

我尝试了以下几点:

var msgs = document.getElementById("messsages").innerHTML
但这只是获取所有内容,包括div id、样式等,而不仅仅是文本内容。当我尝试了.textContent或.text后,在消息日志页面上,我会得到一个空白页面或显示“未定义”的页面。我认为“未定义”的问题可能是因为变量msgs没有将其值更新到messsages div上发布的消息

有什么建议吗

JS,触发要在页面上查看的消息

showMessage = function(message) {
    console.log("Show Message");
    var existing = $("#m" + message._id);
    if (existing.length > 0) return;
    $("#messsages").append('<div class="message" id="' + message._id + '">' + message.body + '</div>');
    $('#messsages').find(".message:last").slideDown("fast", function(){
        $('html, body').animate({scrollTop: $(document).height()}, 400);
    });
};
showMessage=函数(消息){
控制台日志(“显示消息”);
var existing=$(“#m”+消息。_id);
如果(existing.length>0)返回;
$(“#消息”).append(“”+message.body+“”);
$(“#消息”).find(“.message:last”).slideDown(“fast”,function(){
$('html,body').animate({scrollTop:$(document.height()},400);
});
};
如果要从多条
消息中获取文本,则不能使用
消息的id。相反,请使用class
。messages

既然您标记了jQuery,我就假设您愿意使用它,
。each()
是一个循环遍历每个选择器元素的函数,如下所示:

var msgs = []; // initialize array
$('.messages').each(function() {
    msgs.push($(this).text()); // add the text in this specific message div into the array
});

如果您只需要一个长字符串,那么就构造一个字符串而不是数组。

只是想知道为什么要标记php而不是python?(编辑:nvm,仔细阅读)嘿,当我在控制台中输入变量“msgs”时,结果是[]。消息日志上还有一个空白页。这是指变量可能没有更新以注册messages div的新值的问题。首先想到的是.onchange,但这仅适用于输入。OP的主要问题是每次发布消息时都更新msgs变量。我假设@KingAlfredChameleon最初,您的messages div是空的,因此您在控制台中得到的结果是空的。然后发布一条消息,并在控制台中检查msgs变量的值是否有任何更改。@KingAlfredChameleon,您希望在新消息div到达dom时激活此代码,因此无论发生什么事件,都会触发消息“放置在视图中”是你把这段代码放进去的那个。@毫无疑问,这就是你说的吗
showMessage=function(message){console.log(“showMessage”);var existing=$(“#m”+message.\u id);if(existing.length>0)return;$(“#messages”).append(“”+message.body+“”);$(“#messages”).find(“.message:last”).slideDown(“fast”,function(){$('html,body')。animate({scrollTop:$(document.height())),,400);     }); };
如果是这样,我不确定如何在这个JS事件中更新msgs变量。@KingAlfredChameleon我建议将该代码添加到原始问题中!