本人用的是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
这是字符串的问题,jquery的getJSON获取的服务器返回数据事实上只是一个字符串,通过以下语句把字符串变成对象:
eval('(' + result + ')'); //result为服务器的返回
现在来看看,假设服务器返回一个字符串的格式如下:
'{name: "GrayZhang"}'
则使用eval后会变成一个正常的对象,拥有一个name属性,属性的值为GrayZhang
然而如果服务器返回的正好是如下的结果:
'{name: "Gray
Zhang"}'
很显然,eval会出错,因为你能这样定义一个JS对象吗,比如:
var username = 'Gray
Zhang';
我想一定会说语法错误的吧,因此在服务器端去除多余的\n和\r是必须的,另外一点就是应该注意将引号转义
可能是你返回的数据里有特殊字符导致 的,你用fiddler查看一下,返回的json格式。再根据实际情况把这些特殊字符去掉。