C#列表> JSON> Javascript
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#列表> JSON> Javascript,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2802字,纯文字阅读大概需要5分钟。
内容图文
我正在对ASP.Net MVC网站上的控制器方法进行AJAX调用.该方法发送回一些JSON化的自定义对象.
我在将来自这些C#对象的列表作为Javascript数组时遇到麻烦,而我对Javascript刚陌生,不了解问题是什么.
我有一个名为“动画”的对象.每个动画都有一个名为“框架”的列表.如果我尝试通过JSONized Frames例如currentAnimation.Frames到一个期望整数数组的Javascript方法中,我没有收到异常,但是接收方法没有像预期的那样获得整数数组,因此它也不对数据做任何事情.
这是我的Javascript.请注意,它将“ this.spriteSheet.Animations [sheet] .Frames”传递给“ addAnim”方法.这行不通.
for (var sheet in this.spriteSheet.Animations) {
var animation = this.addAnim(this.spriteSheet.Animations[sheet].Name, this.spriteSheet.Animations[sheet].Speed, this.spriteSheet.Animations[sheet].Frames);
if (this.flip) {
animation.flip.x = true; ;
}
}
这是我修改后可以使用的一些Javascript(尽管我不知道这是否是最好的解决方案,但我仍然不真正知道问题出在哪里):
for (var sheet in this.spriteSheet.Animations) {
var frames = new Array();
for (var frame in this.spriteSheet.Animations[sheet].Frames) {
frames[frame] = this.spriteSheet.Animations[sheet].Frames[frame];
}
var animation = this.addAnim(this.spriteSheet.Animations[sheet].Name, this.spriteSheet.Animations[sheet].Speed, frames);
if (this.flip) {
animation.flip.x = true; ;
}
}
这是我的控制器动作代码:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPlay(int id)
{
// get the game that has been requested
Cherub.Common.Logic.Game game = new Common.Logic.Game();
// get the play data
Play play = game.GetPlay(id);
return Json(play, JsonRequestBehavior.AllowGet);
}
我用JQuery的ajax调用来调用控制器动作:
$.ajax({
type: "GET",
url: ajaxUrl,
contentType: "application/json; charset=utf-8",
data: {},
dataType: "json",
success: functionSuccess,
error: functionFailure,
cache: false
});
这是从控制器操作返回的JSON的一小部分:
"Animations":[{"Name":"bob","Frames":[0,1,2],"Speed":0.2}]
这是我的SpriteSheet课程
public class SpriteSheet
{
public SpriteSheet(string name)
{
Animations = new List<Animation>();
switch(name.ToLower())
{
case "sylph":
Sheet = "media/Sylph.png";
Animations.Add(new Animation { Name = "bob", Frames = new List<int> { 0, 1, 2 }, Speed = .2f });
FrameSize = new Vector2D { X = 94, Y = 125 };
break;
}
}
public string Sheet { get; set; }
public List<Animation> Animations { get; set; }
public Vector2D FrameSize { get; set; }
}
public class Animation
{
public string Name { get; set; }
public List<int> Frames { get; set; }
public float Speed { get; set; }
}
解决方法:
根据问题中的示例,“动画”和“帧”是数组-但您将它们当作对象来对待.
for..in循环对于迭代对象的属性很有用,但是您需要使用简单的for循环遍历数组中的每个元素.
如果在循环中更改for ..,则应获得所需的结果:
var anims = spriteSheet.SpriteSheet.Animations;
for(i = 0; i < anims.length; i++) {
var frames = new Array();
for(j = 0; j < anims[i].Frames.length; j++) {
frames[i] = anims[i].Frames[j];
...
内容总结
以上是互联网集市为您收集整理的C#列表> JSON> Javascript全部内容,希望文章能够帮你解决C#列表> JSON> Javascript所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。