1

有人可以帮助或向我解释这是如何工作的吗?我认为:

 <script type="text/javascript">
   var jqxhr = $.getJSON("<%= Url.Action("GetTrainingModulePoints" , "Home") %>", function (json) {
    console.log(json);
    });
 </script> 

GetTrainingModulePoints 应该返回 4 行,每行包含一个交互类型的值和一个点的值

在控制台日志中我只是得到[object object]?如何查看变量 json 中的内容?

http://imageshack.us/photo/my-images/542/firebug.png/

谢谢

4

1 回答 1

2

查看Network tab in FireBug或类似的 javascript 调试工具。在那里您将看到 AJAX 请求,您所要做的就是扩展请求并查看响应。

例如,这是一个示例 AJAX 请求在 FireBug 中的样子:

在此处输入图像描述

如果您单击JSON选项卡,您将看到格式化为 JSON 对象的输出,您可以在其中展开/折叠属性。

如果由于某些非常奇怪的原因您不能在 Web 浏览器中使用 javascript 调试工具(我什至不知道您如何开发 Web 应用程序,但是...)您可以使用JSON.stringify现代浏览器中内置的方法:

var jqxhr = $.getJSON("<%= Url.Action("GetTrainingModulePoints" , "Home") %>", function (json) {
    alert(JSON.stringify(json));
});

如果您没有使用没有JSON.stringify本机内置方法的现代浏览器,您仍然可以将json2.js脚本引用到您的页面。


更新:

好的,您的困惑似乎来自您正在获得{"success":true}而您期望从存储过程中获取行的事实。我知道这一点,因为我回答了你的previous question

这是您的控制器操作的样子:

[HttpGet]
public JsonResult GetTrainingModulePoints()
{
    var currentUser = ZincService.GetUserForId(CurrentUser.UserId);
    ZincService.TrainingService.GetTrainingModulePoints(currentUser.UserId);
    return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}

正如你在这个控制器动作中看到的,你总是在返回success = true。如果你想从你的存储过程中返回结果,你可以这样做:

[HttpGet]
public JsonResult GetTrainingModulePoints()
{
    var currentUser = ZincService.GetUserForId(CurrentUser.UserId);
    var modulePoints = ZincService.TrainingService.GetTrainingModulePoints(currentUser.UserId);
    return Json(
        new { 
            success = true, 
            modulePoints = modulePoints 
        }, 
        JsonRequestBehavior.AllowGet
    );
}

在这里,我假设您的TrainingService.GetTrainingModulePoints方法实际上是在返回一些对象。如果不是这种情况,您将不得不解释这些方法在做什么以及您希望如何获得输出。

于 2012-12-28T10:00:20.493 回答