把RenderList()函数改成ajax取数据库中用户,时间滚动广告到前台

<script>


  ; (function ($) {

    var box = document.getElementById("bm_content");

    var l1 = document.getElementById("tb1");

    var l2 = document.getElementById("tb2");

    autoScroll();

    function autoScroll() {

      var product = RenderList();

      l1.innerHTML = product;

      if (l1.offsetHeight > box.offsetHeight) {

        l2.innerHTML = l1.innerHTML;//克隆list1的数据,使得list2和list1的数据一样

        scrollMove = setInterval(scrollup, 30);//数值越大,滚动速度越慢

        box.onmouseover = function () {

          clearInterval(scrollMove)

        }

      }

    }

    function scrollup() {

      //滚动条距离顶部的值恰好等于list1的高度时,达到滚动临界点,此时将让scrollTop=0,让list1回到初始位置,实现无缝滚动

      if (box.scrollTop >= l1.offsetHeight) {

        box.scrollTop = 0;

      } else {

        box.scrollTop++;

      }

    }

    //鼠标离开时,滚动继续

    box.onmouseout = function () {

      scrollMove = setInterval(scrollup, 30);

    }

    function RenderList() {

        

      var str = '';

      for (var i = 0; i < 20; i++) {

        var a =i+1;

        str += '<tr>';

        str += '<td class="ellipsis">';

        str += '<img src="skin/images/portrait_default.png"/>';

        str += '<span class="center" title="张三' + a + '" style="margin-left: 10px;">张三' + a + '</span>';

        str += '</td>';

        str += '<td class="ellipsis" title="' + a + '年级上海教育版同步课">' + a + '年级上海教育版同步课</td>';

        str += '<td class="ellipsis" title="16点46分">16点46分</td>';

        str += ' </tr>';

      }

      return str;

    }


  })(jQuery)

</script> 

;(function($) {
  		var box = document.getElementById("bm_content");
  		var l1 = document.getElementById("tb1");
  		var l2 = document.getElementById("tb2");
  		autoScroll();

  		function autoScroll() {
  			RenderList(function(product) {
  				l1.innerHTML = product;
  				if (l1.offsetHeight > box.offsetHeight) {
  					l2.innerHTML = l1.innerHTML; //克隆list1的数据,使得list2和list1的数据一样
  					scrollMove = setInterval(scrollup, 30); //数值越大,滚动速度越慢
  					box.onmouseover = function() {
  						clearInterval(scrollMove)
  					}
  				}
  			});
  		}

  		function scrollup() {
  				//滚动条距离顶部的值恰好等于list1的高度时,达到滚动临界点,此时将让scrollTop=0,让list1回到初始位置,实现无缝滚动
  				if (box.scrollTop >= l1.offsetHeight) {
  					box.scrollTop = 0;
  				} else {
  					box.scrollTop++;
  				}
  			}
  			//鼠标离开时,滚动继续
  		box.onmouseout = function() {
  			scrollMove = setInterval(scrollup, 30);
  		}

  		function RenderList(cbf) {
  			$.ajax({
  				url: "url.php",
  				type: "POST",
  				dataType: "json",
  				success: function(data) {
  					var str = '';
  					for (var i = 0; i < data.length; i++) {
  						str += '<tr>';
  						str += '<td class="ellipsis">';
  						str += '<img src="skin/images/portrait_default.png"/>';
  						str += '<span class="center" title="' + data[i].name + '" style="margin-left: 10px;">' + data[i].name + '</span>';
  						str += '</td>';
  						str += '<td class="ellipsis" title="' + data[i].name + '年级上海教育版同步课">' + data[i].name + '年级上海教育版同步课</td>';
  						str += '<td class="ellipsis" title="'+ data[i].time +'">'+ data[i].time +'</td>';
  						str += ' </tr>';
  					}
					cbf(str);
  				}
  			});
  		}


然后让url.php输出这样json格式
[
	{"name":"aa","time":"16点46分"},
	{"name":"bb","time":"18点43分"},
	{"name":"cc","time":"12点39分"},
	{"name":"dd","time":"19点33分"}
]


我这个数据出来的是这样的{0:“aa”,"name":"aa",1:"16点46分","time":"16点46分"}

我把它变成对象  var obj=eval("("+data+")");

但是好像没反应

 function RenderList(cbf) {

  $.ajax({

  url: "action/do.php?<?php echo key::GetEncrypt("buyspace.php") ?>",

  type: "POST",

  dataType: "json",

  success: function(data) {

  var obj=eval("("+data+")");

  var str = '';

  for (var i = 0; i < data.length; i++) {

  str += '<tr>';

  str += '<td class="ellipsis">';

  str += '<img src="skin/images/portrait_default.png"/>';

  str += '<span class="center" title="' + obj.name + '" style="margin-left: 10px;">' + obj.name + '</span>';

  str += '</td>';

  str += '<td class="ellipsis" title="' + obj.name + '年级上海教育版同步课">' + obj.name+ '年级上海教育版同步课</td>';

  str += '<td class="ellipsis" title="'+ obj.name +'">'+ obj.name +'</td>';

  str += ' </tr>';

  }

cbf(str);

  }

  });

  }

php输出的必须是这样的json格式
[
	{"name":"aa","time":"16点46分"},
	{"name":"bb","time":"18点43分"},
	{"name":"cc","time":"12点39分"},
	{"name":"dd","time":"19点33分"}
]

 })(jQuery) 是不是掉了这个

对,要加上

好像还是没用

cbf 是什么?

是传的参数吗


已经设置 dataType: "json", 了

就不要用 var obj=eval("("+data+")");了

cbf是回调函数

数据那边 返回的结果集 不是你这样的模型

 echo json_encode($css,JSON_UNESCAPED_UNICODE);

我把它 结果集合 转化成JSON后{0:“aa”,"name":"aa",1:"16点46分","time":"16点46分"}

怎样让它变成你那样的数据类型?

你这个json太奇怪了,

用类似这样的

$jarr = array();
while ($row = mysqli_fetch_array($result,MYSQL_ASSOC)) {
	$obj = array();
	$obj["name"] = $row["name"];
	$obj["time"] = $row["time"];
	$jarr[] = $obj; 
}
echo json_encode($jarr);//将数组进行json编码


$(document).ready(function(){

  $(".butn").click(function(){

    var password = $("#wangwang").val();

    $.post('action/do.php?<?php echo key::GetEncrypt("buyspace.php") ?>',

     

{pwd:password},function(data) {     

   var obj=eval("("+data+")");

   

$("#spId1").text(obj.name);

    })

  })

})

</script>

我这样可以得到数据


但是你那样好像不行

你的只有一行数据,这个代码是要多行数据

好像还是不行 是不是要用轮询啊

把你php的代码发一下

<?php

@header('Content-type: text/html;charset=utf-8');

require_once "../includes/conn.php";

require("../includes/config_global.php");

require_once "../includes/classes/biz.class.php";

  $db = new DB();//查找全部数据

$db->Connect(DBHOST,DBUSER,DBPW,DBNAME);  

  $ro="select * from phmessage where to_days(now()) = to_days(time) ";//查找是否存在数据库里

mysql_query("set names utf8;");

$result=$db->query( $ro);

//$res1=mysql_num_rows($result);

  //if($res1>0){

$jarr = array();

while ($row = mysqli_fetch_array($result,MYSQL_ASSOC)) {

$obj = array();

$obj["name"] = $row["name"];

$obj["time"] = $row["time"];

$jarr[] = $obj; 

}

echo json_encode($jarr);//将数组进行json编码    

//}else{   

//exit('fail');

//}


?>


<script>

;(function($) {

  var box = document.getElementById("bm_content");

  var l1 = document.getElementById("tb1");

  var l2 = document.getElementById("tb2");

  autoScroll();


  function autoScroll() {

  RenderList(function(product) {

  l1.innerHTML = product;

  if (l1.offsetHeight > box.offsetHeight) {

  l2.innerHTML = l1.innerHTML; //克隆list1的数据,使得list2和list1的数据一样

  scrollMove = setInterval(scrollup, 30); //数值越大,滚动速度越慢

  box.onmouseover = function() {

  clearInterval(scrollMove)

  }

  }

  });

  }


  function scrollup() {

  //滚动条距离顶部的值恰好等于list1的高度时,达到滚动临界点,此时将让scrollTop=0,让list1回到初始位置,实现无缝滚动

  if (box.scrollTop >= l1.offsetHeight) {

  box.scrollTop = 0;

  } else {

  box.scrollTop++;

  }

  }

  //鼠标离开时,滚动继续

  box.onmouseout = function() {

  scrollMove = setInterval(scrollup, 30);

  }


  function RenderList(cbf) {

  $.ajax({

  url: "action/do.php?<?php echo key::GetEncrypt("url.php") ?>",

  type: "POST",

  dataType: "json",

  success: function(data) {

  var str = '';

  for (var i = 0; i < data.length; i++) {

  str += '<tr>';

  str += '<td class="ellipsis">';

  str += '<img src="skin/images/portrait_default.png"/>';

  str += '<span class="center" title="' + data[i].name + '" style="margin-left: 10px;">' + data[i].name + '</span>';

  str += '</td>';

  str += '<td class="ellipsis" title="' + data[i].name + '年级上海教育版同步课">' + data[i].name + '年级上海教育版同步课</td>';

  str += '<td class="ellipsis" title="'+ data[i].time +'">'+ data[i].time +'</td>';

  str += ' </tr>';

  }

cbf(str);

  }

  });

  }

  })(jQuery) 

</script> 

<div id="bm_content" class="bm_content">

      <table class="table table-condensed ">

        <thead style="position: fixed; ">

          <tr>

            <th style=" width: 60px; text-align: right;">用户</th>

            <th style="width: 110px; text-align: center;">验证旺旺号</th>

            <th style=" width: 70px; padding-right: 30px;">时间</th>

          </tr>

        </thead>

        <tbody id="tb1"></tbody>

        <tbody id="tb2"></tbody>

      </table>

    </div>

这个function RenderList(cbf) 函数有没有被触发呢

for (var i = 0; i < data.length; i++) {

这里循环肯定会报错的

发错了 while ($row = $db->fetch_one_array($ro);) { 应该是这里会报错

你数据库中的字段名是 name和time吗


不只哦 还有很多字段

我单独拿出你的AJAX ,好像没有什么反应,是不是AJAX有错误

while($row = $result->fetch_assoc()) {


你按F12键打开浏览器的控制台看看Network栏目中php输出的是否正确


mysqli _ fetch _ array()要求参数1是mysqli _ result,资源已给定

对非对象上的成员函数fetch_assoc()的调用

得到了数据[{"name":"你是一个幸运的人77","time":"2020-07-02 17:31:33"},{"name":"曹阿濮","time":"2020-07-02 17:32:36"}]

但是广告栏 不能滚动了


数据行数太少了,这个代码要数据超过div的范围才会滚动

  if (l1.offsetHeight > box.offsetHeight) {