在ASP.NET项目下面,创建两个页面,Default.aspx,GetJson.aspx
在Default.aspx脚本中写入代码:
function test(){
$.getJSON("GetJson.aspx?id=123", function (data) {
alert("test!!!");//调用test函数时,该处没有进来,用火狐调试时,也没有看到JS错误!
$.each(data.items, function (i, item) {
alert(i);
});
});
}
在GetJson.aspx的后台代码中写入代码:
page_load...
{
if(Reques["id"]!=null)
{
Response.Write("[{Name:'Jim',Age:'20'},{Name:'Jack',Age:'21'}]");//是否该处格式有问题?
}
}
格式是有问题
应该这样:
Response.Write('[{"Name":"Jim","Age":20},{"Name":"Jack","Age":21}]');
刚测试了,上面写法也是错的,
应该要这样写:
string data = "[{\"Name\":"\"Jim\",\"Age\":"20},{\"Name\":"\"Jack\",\"Age\":"20}]";
Response.Write(data);
编辑的字符串是错误的,Write输入的是字符串,这样连编译都无法通过啊!
@有机物: 修改了,因为你要输出引号就必须加斜杠。
顺便说些我的测试,这样写是无法得到json的。用webmethod 或者ashx。
@|WinKi|: 我记得这样是可以获得JSON的,但是具体怎么写我忘记了,在网上找了好多都是没有测试过的,所以,我就直接过来发帖了。
@有机物:
别人的是return data 然后可以在前台获取,Response.Write()响应的是Html页面,并不是json。
然后getJSON返回的是object格式。
@|WinKi|: 这个我先考虑考虑,你还能把调用WebMethod的方法贴出来看看?调用WebMethod时,是否要在配置文件里面做配置?
@有机物:
这里有一篇用到这方法的,有源代码
<script src="jquery.js" .....
$(function(){
$("#btnSubmit").click(function(){
function test(){
$.getJSON("GetJson.aspx?id=123", function (data) {
alert("test!!!");//调用test函数时,该处没有进来,用火狐调试时,也没有看到JS错误!
$.each(data.items, function (i, item) {
alert(i);
});
});
}
});
});
亲,没有反应啊!alert("test!!!");这条代码还是没有执行过来啊!你还可以拿我上面的代码测试一下不?
test();
这个函数你调用了吗
调用过了。
手动写json格式,容易写错,还不方便,建议使用.net自带的avaScriptSerializer,直接命名空间,简单方便,将字符串转换为json,当然可以使用Josn.net组件,还有其他组件也可以,
//后台代码改为这样就行了 if (Request["id"] != null) { string content = "[{Name:'Jim',Age:'20'},{Name:'Jack',Age:'21'}]"; JavaScriptSerializer js = new JavaScriptSerializer(); Response.Write(js.Serialize(content));//是否该处格式有问题? }
Response.Write("[{\"Name\":\"Jim\",\"Age\":\"20\"},{\"Name\":\"Jack\",\"Age\":\"21\"}]");
我的这样写没问题,另外你后台代码执行有错误,那个方法也不会执行,那个方法就是sucess方法
你返回的数据格式是这样的
[{id:1,name:"dfsd"},{id:2,name:"dfds"}]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head><title>
</title></head>
<body>
<form name="form1" method="post" action="WebForm1.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZJJirtgdnOBL1IgLlT8FKtFtn7X+" />
</div>
<div>
</div>
</form>
</body>
</html>
你需要处理一下,其实用一般处理程序更方便