首页 新闻 会员 周边 捐助

关于$(document).ready()函数和$.getJSON()函数的问题

0
悬赏园豆:10 [已解决问题] 解决于 2013-06-23 09:21
$.getJSON("/Teacher/Main,function (data) {}...想问下这个这个地址/Teacher/Main后面可以不加参数不?也就是在controller中的方法main()是没有参数的,我强制运行,调试虽然通过,但是总会出现让你下载你返回的数据
最开始的时候是用 $(document).ready(function (){});我以为是这个函数的问题,我又换了一个普通方法,不让它在界面打开时立即呈现数据,可是也会出现这个让你下载数据的界面,好奇怪!而且下载的数据用记事本打开是正确的查询结果。结果是这个:[{"课程ID":"1","课程号":"1","课程名":"计算机图形学","开课时间":"2013-3-20 ","课程容量":"100","课程余量":"100"},{"课程ID":"2","课程号":"2","课程名":"教师技能培训","开课时间":"2013-3-20 ","课程容量":"100","课程余量":"100"},{"课程ID":"3","课程号":"3","课程名":"广告创意与设计","开课时间":"2013-3-20 ","课程容量":"100","课程余量":"100"}]
wj704的主页 wj704 | 初学一级 | 园豆:170
提问于:2013-06-22 18:52
< >
分享
最佳答案
0

返回的 contexttype 设置为 json...

 

main 函数默认返回的是  text/html吧?

收获园豆:5
水墨.MR.H | 菜鸟二级 |园豆:280 | 2013-06-22 19:14

嗯,在main方法中,我的返回值是这样写的return Json(getcourse, JsonRequestBehavior.AllowGet); 

getcourse是查询的结果。

wj704 | 园豆:170 (初学一级) | 2013-06-22 20:56

@wj704: 贴方法的所有代码

水墨.MR.H | 园豆:280 (菜鸟二级) | 2013-06-22 21:01

@水墨.MR.H: 谢谢你回复,我到现在还没解决问题,可否加Q,我的QQ:1532490300

wj704 | 园豆:170 (初学一级) | 2013-06-22 21:43

@水墨.MR.H: 

     [HttpGet]
        public ActionResult Main()
        {
            StuChooseCourseEntities ef = new StuChooseCourseEntities();
            try
            {
                var dtcourse = (from a in ef.course join b in ef.major on a.MajorID equals b.MajorID select a).ToList<course>();
                List<Dictionary<string, string>> getcourse = new List<Dictionary<string, string>>();
                foreach (course item in dtcourse)
                {
                    Dictionary<string, string> itemcourse = new Dictionary<string, string>();
                    itemcourse.Add("课程ID", item.ID.ToString());
                    itemcourse.Add("课程号", item.CourseNo.Trim());
                    itemcourse.Add("课程名", item.CourseName.Trim());
                    itemcourse.Add("开课时间", item.CourseTime.ToString().Trim().Substring(0, 10));
                      itemcourse.Add("课程容量", item.StuNumMax.ToString());
                    itemcourse.Add("课程余量", item.StuNumRemain.ToString());
                    getcourse.Add(itemcourse);   
                }
                return Json(getcourse, JsonRequestBehavior.AllowGet);  
            }
            catch { return View(); }
        }

方法应该是没问题的,我自己也设了断点看查询出来的结果,而且返回的数据其实也是正确的,就是为什么药下载,而不是加载到界面,让我百思不得其解。。

wj704 | 园豆:170 (初学一级) | 2013-06-22 21:56
其他回答(2)
0

Main 这个action中返回json 

收获园豆:5
chenping2008 | 园豆:9836 (大侠五级) | 2013-06-22 19:45

return new json

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2013-06-22 19:46

嗯,在main方法中,我的返回值是这样写的return Json(getcourse, JsonRequestBehavior.AllowGet); 

getcourse是查询的结果。

支持(0) 反对(0) wj704 | 园豆:170 (初学一级) | 2013-06-22 20:56
0

我知道错了,还是自己不够细心,也没有好好理解哪些知识点,现在改正过来了,警惕自己,要戒躁,戒躁!

wj704 | 园豆:170 (初学一级) | 2013-06-23 09:20

哪出的错误呢

支持(0) 反对(0) 水墨.MR.H | 园豆:280 (菜鸟二级) | 2013-06-24 06:00

@水墨.MR.H:  我不知道这样理解对不对,我的main方法中直接就返回  return Json(getcourse, JsonRequestBehavior.AllowGet);而且main方法前有HttpGet标志,这就意味着,在页面生成之前首先找到这个方法,执行这个方法的结果是return Json,但这个时候页面还没生成,所以返回的结果不知道放哪里,也就只能让你下载了。我后面改了一下,在main方法中让它return View(),然后再另外写一方法,要想让它在页面加载后立即呈现查询到的数据,用了这个 $(document).ready(function () {
                        $.getJSON("/Teacher/getCourse",
                         function (data){});是对的,现在实现了自己想要的效果了。

支持(1) 反对(0) wj704 | 园豆:170 (初学一级) | 2013-06-24 08:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册