Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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生成Javascript对象_Javascript_Asp.net Mvc 3 - Fatal编程技术网

ASP.NET生成Javascript对象

ASP.NET生成Javascript对象,javascript,asp.net-mvc-3,Javascript,Asp.net Mvc 3,我需要从服务器生成一个JSON对象,其中包含要缓存在客户机上的数据。我提出以下建议: <script src='Path to js file on server" /> 然而,当我试图访问jsonData对象时,它会说,未定义 有没有其他方法可以从服务器端生成有效的javascript 谢谢 这是服务器端代码: var items = List<myObj>(); string json = JsonConvert.SerializeObject(items, F

我需要从服务器生成一个JSON对象,其中包含要缓存在客户机上的数据。我提出以下建议:

<script src='Path to js file on server" />
然而,当我试图访问
jsonData
对象时,它会说,
未定义

有没有其他方法可以从服务器端生成有效的javascript

谢谢


这是服务器端代码:

var items = List<myObj>();

string json = JsonConvert.SerializeObject(items, Formatting.Indented);

StringBuilder sb = new StringBuilder();
sb.AppendLine();
sb.AppendFormat("    var jsonData = {0};", json);

var fileName = Request.PhysicalApplicationPath + "Scripts/Data.js";
System.IO.File.WriteAllText(fileName, sb.ToString());
它说,jsonData是未定义的


就ASP部分而言,问题似乎在于javascript变量范围平面。可能的问题:

  • 你只是不包括那个js文件
  • 您试图在初始化变量之前访问它
  • 变量在适当位置不可见,您正在尝试访问它
  • 您的问题不准确,访问的不是
    jsonData
    ,而是类似
    jsonData[0]。属性
等等


UPD:好的,前两个选项不包括在内。您试图在何处访问此变量?请向我们展示部分代码。

发布一个示例json数据和尝试使用它的代码。您是否尝试发回json或Javascript代码?这是两种不同的构建方式。@ianaldo21 json是javascript对象表示法。@jrummell json是真正不同的东西。在当前情况下,这无关紧要,因为JSON是有效的javascript对象文本。但并非相反。@jrummell是的,这是javascript对象表示法。我没有说它们是两个不同的东西,它们是不同的构造(组合)在一起的。
var items = List<myObj>();

string json = JsonConvert.SerializeObject(items, Formatting.Indented);

StringBuilder sb = new StringBuilder();
sb.AppendLine();
sb.AppendFormat("    var jsonData = {0};", json);

var fileName = Request.PhysicalApplicationPath + "Scripts/Data.js";
System.IO.File.WriteAllText(fileName, sb.ToString());
alert(jsonData[0].Id);