论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Javascript教程
Tag:验证,特效,入门,实例,验证,表单,特效,正则表达式,跑马灯,document,函数,代码,getElementByID,菜单,图片,视频教程

Javascript教程_有关jQuery.autocomplete处理返回的JSON当成字符串的解决办法教程

文章类别:Javascript | 发表日期:2010-4-26 9:26:27

有关jQuery.autocomplete处理返回的JSON当成字符串的解决办法教程

在网上看到的,都试过失败的情况下,终于看到可以用 eval() 函数可以解决,写下了以下的语句,请高手们指点一下。

在后台返回一个JSON格式的字符串

C#[ReadData.aspx],以下是用Response.Write();的返回结果;

[{Sid:"1",S_Title:"这是第一个JSON",S_Count:"500"},{Sid:"3",S_Title:"这是第二个JSON",S_Count:"125"},{Sid:"3",S_Title:"这是第三个JSON",S_Count:"360"}]

前台

如果要获取Sid,还要在最后设置 .result()。

var Index=-1;

$("#txtTitle").autocomplete("ReadData.aspx",{

    matchContains: true,
    matchCase:false,
    selectFirst:false,
    cacheLength:1,
    delay:5,

    extraParams:{status:"2",limit:"10"},

    parse:function(data){

     //data=rs(data);    //这是如果不是返回JSON格式的字符串所要用的;
     var d=eval("("+data+")");    //此处要用eval函数;
     var rows=new Array();
     for(var i=0;i<d.length;i++){
      rows[rows.length]={data:d[i],value:d[i].Sid,result:d[i].S_Title}
     }
     return rows;
    },
    formatItem:function(row,i,max){

     var Content = i+"/"+max+": [<font color='red'>"+row.Sid+"</font>] "+ row.S_Title;
     if(null!=row.S_Count) Content += " [<font color=\"red\">" + row.S_Count+"</font>]";
    return Content;

    },
    formatMatch:function(row,i,max){
     return row.S_Title;    //这个不知道为什么不能return row.Sid+" "+row.S_Title;
    },
    formatResult:function(row,i,max){
     return row.S_Title;    //这个不知道为什么获取不了 row.Sid;

    }

}).result(function(event,data,formatted){
   Index=((data!=null&&null!=data.Sid)?eval(data.Sid):-1);
  });



以下是处理一个返回不是JSON格式的字符串(例如“这是第一个JSON 1\n这是第二个JSON 2\n这是第三个JSON 3”)的函数;

  function rs(data){
   this.Sid=new Array();
   this.S_Title=new Array();
   data=data.split("\n");
   var json='[';
   for(var i=0;i<data.length;i++){
    var Num=data[i].lastIndexOf(" ");
    this.S_Title[i]=data[i].substring(0,Num);
    this.Sid[i]=data[i].substring(Num+1,data[i].length);
    json+='{Sid:"'+this.Sid[i]+'",S_Title:"'+this.S_Title[i]+'"}';
    if(i<data.length-1) json+=',';
   }
   json+=']';
   //json='[{Sid:" ",S_Title:" "},{Sid:" ",S_Title:" "},{Sid:" ",S_Title:" "}]';  JSON的格式
   return json;
  }

以上代码只在IE上执行,没有在其他浏览器测试过。

视频教程列表
文章教程搜索
 
Javascript推荐教程
Javascript热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058