slkey 2021-07-12 10:35 采纳率: 100%
浏览 67
已采纳

ajax异步获取后台数据 ,后台是有数据的 前台可能是格式写法问题 不能显示出来

原本是这样一段代码 不断自动随机循环的回复聊天记录的数据 ,现在想把这个自动回复改成线上后台回复

// 模拟接受信息
function get() {
 
    let text = ['您好。!' ,'您可以描述下你的问题吗?' ,' 如果您不想等待可以留下电话号码,我们尽快给您回拨电话过去' ,' 你可以详细描述你的问题吗?']
    let data = {
        status: 1,
        userId: '1',
        img: 'k2.png',
        time:getTodayBegin() ,
        content: text[Math.floor(Math.random() * 4)]
    }
 
    let chat_html = `
        <div class="msg-box">
         <div class="msg-agent">
            <div class="agent-avatar"><img src="../wap/img/` + data.img + `" style="width:36px;"></div>
            <div class="arrow_box_left" style="margin-left:10px;">
              <div class="text1">[系统提示]&nbsp;` + data.time +`</div>
              <div class="text">
                <div> `+ data.content +`</div>
              </div>
            </div>
          </div></div>            
    `
    $('.top-box').append(chat_html)
    $('.top-box').scrollTop($('.top-box')[0].scrollHeight + $('.top-box')[0].scrollTop)
}
 
init(data)

上面是原来正确的代码 下面修改后回复内容 方法一 前台显示没有获取到 content数据

// 模拟接受信息
function get() {
 
 
if (window.XMLHttpRequest)
  {// 针对 IE7+, Firefox, Chrome, Opera, Safari 的代码
  xmlhttp=new XMLHttpRequest();
  }
else
  {// 针对 IE6, IE5 的代码
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
     let text = [xmlhttp.responseText]
    let data = {
        status: <%=ukid%>,
        userId: '1',
        img: 'k1.png',
        time:getTodayBegin() ,
        content: text[xmlhttp.responseText]
    };
    }
  }
xmlhttp.open("GET","/online_data/index.asp?act==update&ukid=<%=ukid%>",true);
xmlhttp.send();
 
 
    let chat_html = `
        <div class="msg-box">
         <div class="msg-agent">
            <div class="agent-avatar"><img src="../wap/img/` + data.img + `" style="width:36px;"></div>
            <div class="arrow_box_left" style="margin-left:10px;">
              <div class="text1">[系统提示]&nbsp;` + data.time +`</div>
              <div class="text">
                <div> `+ data.content +`</div>
              </div>
            </div>
          </div></div>            
    `
    $('.top-box').append(chat_html)
    $('.top-box').scrollTop($('.top-box')[0].scrollHeight + $('.top-box')[0].scrollTop)
}
 
init(data)

方法二 也是一样没有获取到 前台显示没有获取到 content数据

$(document).ready(function(){  
    $.ajax({url:"/online_data/index.asp?act==update&ukid=<%=ukid%>",success:function(result){
 let text = [result]
    let data = {
        status: <%=ukid%>,
        userId: '1',
        img: 'k1.png',
        time:getTodayBegin() ,
        content: text[result];
 
    }});
});

后台数据代码 不管怎么样都会又数据传递出来 但是前台 没有获取到任何数据


<%
 response.expires=-1
act=ucase(request.querystring("act"))
ukid=ucase(request.querystring("ukid"))
contents=ucase(request.querystring("contents"))
 
if act="update" then
    set rs=server.CreateObject("adodb.recordset")
    sql="select * from tian where status='"&ukid&"' and biaoji=0 "
    rs.open sql,conn,1,3
    if not rs.eof then
        biaoji=rs("biaoji")
        contents=rs("contents")

     rs.Close
     Set rs = Nothing
 
    end if
end if
 
if contents="" then
  response.write("no suggestion")
else
  response.write(contents)
end if
 
%>
  • 写回答

5条回答 默认 最新

  • slkey 2021-07-13 11:16
    关注

    前台的ukid 和传递到后台的ID不一样 把值赋予 status 值就变成另外一个ID啦
    下面随机生成的ID

    <%
      ukid=request.cookies("ukid")
      if ukid="" then
        ukid=getRnd()
        response.cookies("ukid")=ukid
      end if
    
    %>
    

    下面是发送信息出现的问题

    // 发送信息
    function send() {
    
        // console.log()
        data.push({
            status: <%=ukid%>,
            userId: '2',
            img: 'k1.png',
            time:getTodayBegin() ,
            content: $('#send_content').val()
        })
    
    
        render_page({
            status: <%=ukid%>,
            userId: '2',
            img: 'k1.png',
            time:getTodayBegin(),
            content: $('#send_content').val()
    
        })
    
        $('#send_content').val('')
    }
    
     
    
    // 发送后再次渲染页面
    function render_page(data) {
    
    
    $.ajax({ url: '/yydata/', type: 'get', data: data } );
    
    
    
        let chat_html = `
        <div class="msg-box">
                <div class="msg-client">
                <div class="client-avatar"><img src="../wap/img/` + data.img + `" style="width:36px;"></div>
                <div class="arrow_box" style="margin-right:45px;">
                <div class="text1">[系统提示]&nbsp;` + data.status +`</div>
                  <div class="text">
                    <div style="font-family: 微软雅黑; font-weight: normal; font-style: normal; font-size: 12pt; text-decoration: none; ">` + data.content +`</div>
                  </div>
                </div>
              </div>
            </div>    
            `
        $('.top-box').append(chat_html)
        $('.top-box').scrollTop($('.top-box')[0].scrollHeight + $('.top-box')[0].scrollTop)
        
        
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已采纳回答 7月13日
  • 创建了问题 7月12日

悬赏问题

  • ¥20 求一个会修改Javaweb 代码的,非常简单
  • ¥20 有没有会写mysql的,有偿做个问题
  • ¥20 win11账户锁定时间设为0无法登录
  • ¥45 C#学生成绩管理系统
  • ¥15 VB.NET2022如何生成发布成exe文件
  • ¥30 matlab appdesigner私有函数嵌套整合
  • ¥15 给我一个openharmony跑通webrtc实现视频会议的简单demo项目,sdk为12
  • ¥15 vb6.0使用jmail接收smtp邮件并另存附件到D盘
  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥15 关于freesurfer使用freeview可视化的问题