首页 新闻 会员 周边

ASP.NET JS调用JSON

0
悬赏园豆:5 [已解决问题] 解决于 2013-11-08 08:31

在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'}]");//是否该处格式有问题?

  }

}

有机物的主页 有机物 | 初学一级 | 园豆:19
提问于:2013-11-06 15:00
< >
分享
最佳答案
0

格式是有问题

应该这样:

Response.Write('[{"Name":"Jim","Age":20},{"Name":"Jack","Age":21}]');

刚测试了,上面写法也是错的,

应该要这样写:

string data = "[{\"Name\":"\"Jim\",\"Age\":"20},{\"Name\":"\"Jack\",\"Age\":"20}]";

Response.Write(data);

收获园豆:5
|WinKi| | 小虾三级 |园豆:669 | 2013-11-06 16:29

编辑的字符串是错误的,Write输入的是字符串,这样连编译都无法通过啊!

有机物 | 园豆:19 (初学一级) | 2013-11-06 16:46

@有机物: 修改了,因为你要输出引号就必须加斜杠。

顺便说些我的测试,这样写是无法得到json的。用webmethod 或者ashx。

|WinKi| | 园豆:669 (小虾三级) | 2013-11-06 16:51

@|WinKi|: 我记得这样是可以获得JSON的,但是具体怎么写我忘记了,在网上找了好多都是没有测试过的,所以,我就直接过来发帖了。

有机物 | 园豆:19 (初学一级) | 2013-11-06 16:55

@有机物: 

别人的是return data 然后可以在前台获取,Response.Write()响应的是Html页面,并不是json。

然后getJSON返回的是object格式。

|WinKi| | 园豆:669 (小虾三级) | 2013-11-06 16:59

@|WinKi|: 这个我先考虑考虑,你还能把调用WebMethod的方法贴出来看看?调用WebMethod时,是否要在配置文件里面做配置?

有机物 | 园豆:19 (初学一级) | 2013-11-06 17:04

@有机物: 

这里有一篇用到这方法的,有源代码

|WinKi| | 园豆:669 (小虾三级) | 2013-11-06 17:19
其他回答(5)
0

<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);
                });
            });

}

 

});

});

大牛博客 | 园豆:180 (初学一级) | 2013-11-06 15:37

亲,没有反应啊!alert("test!!!");这条代码还是没有执行过来啊!你还可以拿我上面的代码测试一下不?

支持(0) 反对(0) 有机物 | 园豆:19 (初学一级) | 2013-11-06 16:22
0

test();

这个函数你调用了吗

刀是什么样的刀 | 园豆:910 (小虾三级) | 2013-11-06 16:31

调用过了。

支持(0) 反对(0) 有机物 | 园豆:19 (初学一级) | 2013-11-06 16:36
0

手动写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));//是否该处格式有问题?
            }
秋壶冰月 | 园豆:5903 (大侠五级) | 2013-11-06 17:21
0

Response.Write("[{\"Name\":\"Jim\",\"Age\":\"20\"},{\"Name\":\"Jack\",\"Age\":\"21\"}]");

我的这样写没问题,另外你后台代码执行有错误,那个方法也不会执行,那个方法就是sucess方法

code先生-null | 园豆:307 (菜鸟二级) | 2013-11-06 22:45
0

你返回的数据格式是这样的

[{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>

你需要处理一下,其实用一般处理程序更方便

dfgf | 园豆:206 (菜鸟二级) | 2013-11-07 12:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册