提问人:Foxlon 提问时间:11/8/2023 最后编辑:haxtbhFoxlon 更新时间:11/8/2023 访问量:80
访问 json 输出以更新 jquery 函数时遇到问题
Having problems accessing json output to update jquery function
问:
这有点长。提前谢谢你们。正在构建一个实时聊天应用程序。我被困在如何通知客户座席当前正在键入消息。我有 3 个 ColdFusion 脚本来执行此操作:
客户.cfm(客户聊天界面)
<script src = "jquery-3.6.0.min.js"></script>
<div align="right" id="agent-typing-indicator" style="display: none;">Agent is typing...</div>
<script>
// other codes here
setInterval(function () {
$.get("notify_typing.cfm", function (data) {
// Update the isTyping status in customer.cfm based on the response
var isTyping = data.isTyping;
agentIsTyping(isTyping);
}); }, 5000); // Check every 5 seconds
function agentIsTyping(isTyping) {
if (isTyping) {
// Show a message or indicator to the customer to indicate that the agent is typing.
$("#agent-typing-indicator").show();
} else {
// Hide the typing indicator when the agent stops typing.
$("#agent-typing-indicator").hide();
}
}
</script>
代理.cfm(代理聊天界面)
<script src="jquery-3.6.0.min.js"></script>
<script> // other codes here
// Detect typing start and stop in the input field
var typingTimer; // Timer identifier
var doneTypingInterval = 1000; // Time in milliseconds, e.g., 1000 ms = 1 second
$("#agent-response").on("keyup", function () {
clearTimeout(typingTimer);
// Start a timer to detect when the agent stops typing
typingTimer = setTimeout(doneTyping, doneTypingInterval);
// Notify the client that the agent is typing
notifyClientOfTyping(true);
});
$("#agent-response").on("keydown", function () {
// Clear the timer, indicating the agent is still typing
clearTimeout(typingTimer);
});
function doneTyping() {
// Agent stopped typing, notify the client
notifyClientOfTyping(false);
}
function notifyClientOfTyping(isTyping) {
$.post("notify_typing.cfm", { isTyping: isTyping }, function (data) {
// Handle the response if needed
console.log(data);
});
}
</script>
notify_typing.cfm
(通过 AJAX POST 从 Agent.cfm 接收代理键入状态,并通过 AJAX GET 将相同的代理键入状态提供给 Customer.cfm)
<cfparam name="form.isTyping" default="">
<cfif structKeyExists(form, "isTyping")>
<cfset isTyping = form.isTyping>
<cfcontent type="application/json">
<cfoutput>{"isTyping": #serializeJSON(isTyping)#}</cfoutput>
</cfif>
我使用 [ console.log(data); ] 来确认 agent.cfm 正在向notify_typing.cfm发送正确的 json 值,{isTyping: 'true'} 或 {isTyping: 'false'}。
问题是,当 customer.cfm 进行 json 调用时,我从notify_typing.cfm收到空的 json 值 ( {isTyping: ''} )( 我使用 console.log(data); 在 customer.cfm 中确认这一点)。因此,我无法隐藏或显示“代理正在键入...”在客户.cfm中。请帮忙。
我已经尝试了 5 天多来解决这个问题,没有任何进展。
答: 暂无答案
评论
cfwebsocket