Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 从action方法返回JSON_Asp.net Mvc_Json - Fatal编程技术网

Asp.net mvc 从action方法返回JSON

Asp.net mvc 从action方法返回JSON,asp.net-mvc,json,Asp.net Mvc,Json,我有这个动作。它将返回一些JSON public JsonResult Get() { ... return new JsonResult { Data = data }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } 然后在我的视图中有一个脚本标记,指向Get action方法 <script type="text/javascript" src="@Url.Content("~/

我有这个动作。它将返回一些JSON

public JsonResult Get()
{
        ...

        return new JsonResult { Data = data }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };  
}
然后在我的视图中有一个脚本标记,指向Get action方法

 <script type="text/javascript" src="@Url.Content("~/resource/get")"></script>

问题是我无法访问JS代码中的JSON数据。似乎JSON需要以某种方式执行。有什么建议吗?

您可以在jQuery中调用操作,然后直接处理Json:

$.ajax({
  dataType: "json",
  url: "/resource/get",
  success: function(data){
      var obj = JSON.parse(data);
  }
});
或更简短的版本:

$.getJSON('/resource/get', function(data) { 
    var obj = data;
});

您只需在jQuery中调用操作,然后直接处理Json:

$.ajax({
  dataType: "json",
  url: "/resource/get",
  success: function(data){
      var obj = JSON.parse(data);
  }
});
或更简短的版本:

$.getJSON('/resource/get', function(data) { 
    var obj = data;
});

如果希望JSON尽快可用,无需额外请求,请将其包含在初始页面加载中:

<script type="text/javascript">
    var myJson = @Html.Action("Get");
</script>

现在,您只需访问脚本中的myJson变量即可访问数据。

如果希望JSON尽快可用,无需额外请求,请将其包含在初始页面加载中:

<script type="text/javascript">
    var myJson = @Html.Action("Get");
</script>

现在,您可以访问脚本中的myJson变量来访问数据。

如果希望在服务器上构建页面时将其转储到HTML中,可以将其添加到视图模型中,然后直接在页面上呈现。下面是一个伪代码示例:

<script type="javascript">
     var obj= JSON.parse('@Model.PropertyContainingJson');
</script>

如果希望在服务器上构建页面时将其转储到HTML中,可以将其添加到视图模型中,然后直接在页面上呈现。下面是一个伪代码示例:

<script type="javascript">
     var obj= JSON.parse('@Model.PropertyContainingJson');
</script>


我知道,但我只是想知道有没有别的办法?也许是mvc html助手?这种方式有什么问题?你有什么特别需要解决的吗?你能告诉我为什么你想用脚本引用而不是通过Ajax调用它吗?我只是想让JSON对象尽快准备好。那么为什么不在document上立即执行这个方法呢。准备好了吗?你也可以使用$.getJSON,我在答案中添加了一个示例,只有3行。但不管怎么说,区别并没有那么大,是吗?我知道,但我只是想知道是否还有其他办法?也许是mvc html助手?这种方式有什么问题?你有什么特别需要解决的吗?你能告诉我为什么你想用脚本引用而不是通过Ajax调用它吗?我只是想让JSON对象尽快准备好。那么为什么不在document上立即执行这个方法呢。准备好了吗?你也可以使用$.getJSON,我在答案中添加了一个示例,只有3行。但无论如何,区别并没有那么大,是吗?你知道你可以直接返回Jsondata;对吧?我知道,但是无论如何你都必须设置JsonRequestBehavior。那么为什么不用[HttpGet]属性来修饰这个方法呢?无论如何你都必须将JsonRequestBehavior设置为AllowGet。你知道你可以直接返回Jsondata;对吧?我知道,但是无论如何你都必须设置JsonRequestBehavior。那么为什么不用[HttpGet]属性来修饰这个方法呢?无论如何你都必须将JsonRequestBehavior设置为AllowGet。。