jq中ajax的res是什么意思,关于jquery ajax中返回值的问题

已解决问题

收藏

关于jquery ajax中返回值的问题

80

[ 标签:jquery,&nbspajax ]

conn.open();

我的星星页面

2009-10-25 11:52

JQuery Code:

$.ajax({

type: "POST",

url: "SourceCode/checkLoginInfo.aspx/checkGeneralUser",

data: "{userName:'" + $("#userName").val() + "',userPassword:'" + $("#userPassword").val() + "'}",

contentType: "application/JSON; charset=utf-8",

timeout: 1000,

dataType: "JSON",

error: function() { $("#message").html("错误") },

success: function(msg) { $("#message").html(msg);}

});C# Code:

public static string checkGeneralUser(string userName, string userPassword)

{

string msg;

string connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString();

string commStr = "select * from userInfo where userName = '" + userName + "'";

SqlConnection conn = new SqlConnection(connStr);

conn.Open();

SqlCommand comm = new SqlCommand(commStr, conn);

SqlDataReader dr = comm.ExecuteReader();

if (dr.Read())

{

if (dr["userPassword"].ToString().Trim() != userPassword)

{

msg = "密码错误!";

}

else

{

msg = "OK";

}

}

else

{

msg = "用户名错误!";

}

dr.Close();

conn.Close();

return msg;

}返回结果:{"d":"用户名错误!"},怎么不单单是我后台代码中返回的字符,为什么还有{}""..这些特殊符号!!

满意答案

好评率:100%

可以作为字符返回的。

你可以将提交的页面的所有网页代码删除。然后用 Response.Write("你想返回的字符");

这样客户端的ajax就只是收到你想返回的字符串了。

继续追问:

但是我是调用后台代码中的方法啊!怎么能将结果输出到页面上呢!还有,我不可能在一个页面中只写一个方法啊!

补充回答:

该答案是回答你对conn.open()的追问。

思路就是 让整个网页 = 你想返回的信息

呵呵

继续追问:

不是,我不想返回整个页面,我只想让她返回C#代码中的方法return出来的值!我现在是这个值我能接收到,但是他多出那些{}""这些特殊符号出来了!我C#代码中返回的是:用户名错误!,但是当succcess中的回调函数接收到的确是:{"d":"用户名错误!"}

补充回答:

1. Respone.Write就是将结果输出成页面内容,C#后台和前台是联系的。

2.如果不想一个页面只能写一个方法的话,那么就在这个方法里面,把return msg改为

Response.Write(msg);

Response.Flush();

Response.End();

继续追问:

无法在方法中调用Response对象

补充回答:

另一种方法就是在客户端解析json对象:

var obj = eval(msg);

var message = obj.d;

或者直接就msg.d也可以?

继续追问:

我也试了!!加了.d之后毛后不回来了!!

补充回答:

我的意思是,保持contentType: "application/JSON; charset=utf-8",和dataType: "JSON", 不变,按你原先的描述,返回的结果是{"d":"用户名错误!"}。

那么对于这个结果,你把它当作一个对象,然后取这个对象的属性d的值就行了。

就是我上面写的

var obj = eval(msg);

var message = obj.d;

只要你保证msg = {"d":"用户名错误!"} ; 那么message肯定是"用户名错误!"。 这个不应该有什么问题啊。

继续追问:

7e33d2c6edc28cacf4237819b79f6fa5.png

这是msg得结果

96e3b65e6d746093346a4a3e4f064062.png

这是msg.d得结果返回是undefined

补充回答:

先使用

var obj = eval(msg);

alert(obj);

看看?

继续追问:

eval()不是将参数作为javascript代码来执行么?{"d":"用户名错误!"}这样一段代码,在javascript里面是执行不出效果来吧?

补充回答:

{"d":"用户名错误!"} 可能仅仅是一个字符串,因此,你对一个字符串使用msg.d当然是undefined。

但是你把这个字符串转为javascript对象的话,就可以使用.d属性了。

而将字符串转为javascript对象的方法就是使用eval。

继续追问:

我晕,我直接

var obj = eval({"d":"用户名错误!"});

alert(obj.d);能正确的返回了!

但是

var obj = eval(msg);

alert(obj.d);又没结果了!

我有测试了msg的值,直接alert(msg);返回的值也是{"d":"用户名错误!"},真是郁闷!

补充回答:

你的写法错误。({"d":"用户名错误!"} 本身就是一个对象了,不需要加上eval来处理。应该在它外面加上' '才是字符串。我刚才试验了一下,变成字符串后不知道为什么eval失败了。不过我们可以用另一个函数JSON.parse来完成同样的工作。

var msg = '{"d":"用户名错误!"}';

var obj = JSON.parse(msg);

alert(obj.d);

该代码在我本机已测试通过。

继续追问:

哈哈!哥们!行了!!非常感谢!

补充回答:

eval失败的问题我弄明白了。正确的写法应该是:

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

必须把字符串整个用()括起来,这样才保证不会因为字符串里带了"",{ } , []这些符号而失败。

您已经评价过!

您已经评价过!

您已经评价过!

您已经评价过!

conn.open();的感言:

哈哈!非常感谢

收藏

分享到:

更好的回答

其他答案(2)

因为你设置了contentType: "application/JSON; charset=utf-8",和dataType: "JSON",

所以它会把返回的对象做json对象处理

你去掉这两行,就是字符串了

就不会有json对象中的{}等符号了

继续追问:

作为字符返回的话,整个网页都返回来了!- -!

补充回答:

嗯,这个有两种解决方案

第一:就是删除页面中html标签,只留头信息

第二:就是在response.write();后面加上response.end();代码

您已经评价过!

您已经评价过!

把dataType: "JSON", 改成 dataType: "html", 试试~

继续追问:

没用!!上面说的我都试过了!

您已经评价过!

您已经评价过!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值