首页 新闻 会员 周边

ajax json格式 问题(急)

0
悬赏园豆:20 [已解决问题] 解决于 2009-08-18 10:10

本人用的是jquery 做异步
function SelectPOST(data){
$.getJSON(
    "ajax/addworklog.aspx",//产生JSON数据的服务端页面
    data,//向服务器发出的查询字符串(此参数可选)
   //对返回的JSON数据进行处理,
    function(json){
 alert(json);
    })}
因为代码太小我就只贴一部分
上面是一个通过AJAX获取JSON的方法
我的addworklog.aspx里的部分代码如下:

//处理JSON数据格式
  public string json(string json)
  {
   string []index1=Getindex(json,"\'").Split(',');
   string []index2=Getindex(json,"\\").Split(',');
   for(int i=0;i<index1.Length-1;i++)
   {
    json.Insert(int.Parse(index1[i]), "\\");
   }
   for(int j=0;j<index2.Length-1;j++)
   {
    json.Insert(int.Parse(index2[j]), "\\");
   } 
   //return json.Replace("\r", "").Replace("\n", "");
   return json;
  }

  public string Getindex(string a,string b)
  {
   string cccc="";
   int i=0;
   int index=a.IndexOf(b);
   while(index>=0)
   {
    cccc+=index+",";
    i++;
    index=a.IndexOf(b,index+1,a.Length-1-index);
   }
   return cccc;
  }
这两个方法是用来处理JSON数据

现在问题就出在
   //return json.Replace("\r", "").Replace("\n", "");
   return json;
这两行,如果我把第二行注释用第一行,一切正常,但是如果我把第一行注释,用第二行,那个alert(json);不起任何做用,我想一定是那个$.getJSON对AJAX返回数据的格式有要求
想请各位高手帮助,
本人QQ75618538

问题补充: 从addworklog.aspx这个返回的数据可以确定是返回了 但好像只要有那个\r \n字符 $.getJSON( "ajax/addworklog.aspx",//产生JSON数据的服务端页面 data,//向服务器发出的查询字符串(此参数可选) //对返回的JSON数据进行处理, function(json){ alert(json); })} 这个就不执行alert(json);
悟〈--觉的主页 悟〈--觉 | 初学一级 | 园豆:145
提问于:2009-08-14 15:47
< >
分享
最佳答案
0

这是字符串的问题,jquery的getJSON获取的服务器返回数据事实上只是一个字符串,通过以下语句把字符串变成对象:

eval('(' + result + ')'); //result为服务器的返回

现在来看看,假设服务器返回一个字符串的格式如下:

'{name: "GrayZhang"}'

则使用eval后会变成一个正常的对象,拥有一个name属性,属性的值为GrayZhang

然而如果服务器返回的正好是如下的结果:

'{name: "Gray

Zhang"}'

很显然,eval会出错,因为你能这样定义一个JS对象吗,比如:

var username = 'Gray

Zhang';

我想一定会说语法错误的吧,因此在服务器端去除多余的\n和\r是必须的,另外一点就是应该注意将引号转义

收获园豆:15
Gray Zhang | 专家六级 |园豆:17610 | 2009-08-14 18:31
其他回答(1)
0

可能是你返回的数据里有特殊字符导致 的,你用fiddler查看一下,返回的json格式。再根据实际情况把这些特殊字符去掉。

收获园豆:5
李.net | 园豆:730 (小虾三级) | 2009-08-14 15:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册