ajax 前台返回后台传递过来的数组

此种功能 我已经搞了两天 才测试出最有效的方法  当然 还是靠百度的帮助

下面来介绍一下把

 
function xianc(did){

 var DateUrl = "did="+did;
 $.ajax({
  type: "get",
  url: "do.php?ac=demo&op=friend",
  data: DateUrl, 
  dataType: "json",
  success: function(response){
  
    eo=$('#t_input');
   
    var re=new RegExp("^"+eo.val(),"i")  ;        //    new RegExp这个函数是一个匹配函数 具体查手册把
    
    
   var  json = eval(response);                 // 先格式化回调回来的数组  我是这么理解 的  这一步是必须做的
   var j=0
   
    for(var i=0; i<json.length; i++)          //遍历回过来的的数组
    {
      
    if(re.test(json[i].name)){                           //如果变量re 的值 匹配 数组中的 一个值 那么执行
   
    $('#sel').append("<li onclick=xs('"+json[i].name+"',"+json[i].uid+") > "+json[i].name+"</li>");   //添加一个节点 把数据写入里面
    j++;
   
    $('#sel').css("display","");
   
   }  //alert($('#sel').size());
     }
  }
 });
 }
});

好啦  看下后台的关键代码把

if($_GET['op']=='friend'){
 
 if($_GET['did']){
  
  $query = $_SGLOBAL['db']->query("SELECT a.uid,b.uid fuid , b.name FROM ".tname('friend')." a ,  ".tname('space')." b  WHERE a.fuid=b.uid AND a.uid=".$_SGLOBAL['supe_uid']." AND b.namestatus=1  AND b.name like '%".$_GET['did']."%' ");
  
  $count = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname('friend')." a ,  ".tname('space')." b  WHERE a.fuid=b.uid AND a.uid=".$_SGLOBAL['supe_uid']." AND b.namestatus=1  AND b.name like '%".$_GET['did']."%'"), 0); 
   
 $listfriend = array();
 while ($value = $_SGLOBAL['db']->fetch_array($query)) {
    //$listfriend[] = $value;
  
   $listfriend[] = array ('name'=>$value['name'],'uid'=>$value['fuid']);

  }
  
 
 if($count){
   
  echo json_encode($listfriend) ;       

  //关键语句  后台处理后的函数是$listfriend 但是想把这个数组 传回前台 就要 用到json_encode()解析一下这个数组 
   }
 die;              //这个die 是因为我用的uchome系统做的  后面是引用模版  因此在次 结束一下就OK啦 传递过去的就是echo的东西
 }
}

原文地址:https://www.cnblogs.com/tested/p/3227543.html