Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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
C# 将JSON文件传递到Javascript ASP.NET MVC4_C#_Javascript_Asp.net_Json_Asp.net Mvc 4 - Fatal编程技术网

C# 将JSON文件传递到Javascript ASP.NET MVC4

C# 将JSON文件传递到Javascript ASP.NET MVC4,c#,javascript,asp.net,json,asp.net-mvc-4,C#,Javascript,Asp.net,Json,Asp.net Mvc 4,我目前的问题是:如何将JSON对象(原样或用Newtonsoft.JSON反序列化的C#对象)传递到javascript文件 我尝试了以下方法: Response.Write(string.Concat("<input id='data' type='hidden' value='", json_file, "' />")); Response.Write(string.Concat(“”)); 但是当json文件以HTML格式呈现(作为HTML属性)时,它会在引号字符上停止,我

我目前的问题是:如何将JSON对象(原样或用Newtonsoft.JSON反序列化的C#对象)传递到javascript文件

我尝试了以下方法:

Response.Write(string.Concat("<input id='data' type='hidden' value='", json_file, "' />"));
Response.Write(string.Concat(“”));
但是当json文件以HTML格式呈现(作为HTML属性)时,它会在引号字符上停止,我试图对其进行转义,但它也不起作用。 因此,在javascript文件中使用JSON.parse()时,语法无效

解决的问题: -在my.cshtml文件中声明了一个javascript变量数据,将jsonfile作为@ViewBag元素放入其中。 -在我的javascript窗口中找到了它 -将其解析为json,使用它,魔术般地完成了


(感谢回答的人)

如果这是一个
json
对象,为什么不在页面上的javascript变量中插入该对象,因为您可能想在Ajax中使用该变量

function someThingClicked(){
  var myObject = <%= json_file %>;

  $.ajax({
    type: "POST",
    url: "SomeUrl",
    data: myObject,
    success: function () { },
    contentType: "application/json; charset=utf-8",
    dataType: "json"});
}
如果您使用的是razor,您可以写下如下内容:

  var myObject = @Html.Raw(ViewBag.json_file);

假设您已将
json_文件
字符串从控制器添加到
ViewBag
中。

在这种情况下,您可以尝试使用这是您连接的结果,导致
值在您指定之前终止。例如,在
json\u文件中有一个
字符

例如,如果文件包含

var x = 'this is a string'
然后,连接的结果将产生无效的html

<input id='data' type='hidden' value='var x = 'this is a string'' />
(假设您已经在使用jQuery,否则您将不得不使用纯香草JS,这需要做更多的工作,但可以完成

Response.Write(string.Concat("<input id='data' type='hidden' value=\"", json_file.Replace('\"', '\''), "\" />"))
Response.Write(string.Concat)(“其他解决方案,而不是在html属性中打印json字符串
  • 创建一个在控制器中返回json的操作

    public string GetData()
    {
        //read your json file
        return json_file; //return your json string
    }
    
  • 在视图端,放置输入标记并通过ajax请求获取json_文件

    <input id='data' type='hidden' />
    <script>
        $(function () {
            $.post("/yourControllerName/getData", {}, function (response) {
                $("#data").val(response);
            },'json');
        });
    </script>
    
    
    $(函数(){
    $.post(“/yourControllerName/getData”,{},函数(响应){
    $(“#数据”).val(答复);
    }“json”);
    });
    

  • json_文件是json字符串还是文件名?它是一个字符串。(我打开了一个StreamReader,将其读到最后,并将其存储在一个字符串中)。json文件格式良好。我让我的应用程序使用不带引号的json文件。在
    json_文件中是否有任何
    ?是的,这正是我所描述的问题。当我使用带引号的json文件时,当json文件没有引号时,它会崩溃
    public string GetData()
    {
        //read your json file
        return json_file; //return your json string
    }
    
    <input id='data' type='hidden' />
    <script>
        $(function () {
            $.post("/yourControllerName/getData", {}, function (response) {
                $("#data").val(response);
            },'json');
        });
    </script>