【问题标题】:Can I pass a linked list from a C# Web Service to a JavaScript function?我可以将链接列表从 C# Web 服务传递到 JavaScript 函数吗?
【发布时间】:2009-06-20 16:31:01
【问题描述】:

我在我的 JavaScript 代码中创建了一个链表类,然后将该代码翻译成 C#。

现在我有一个 JavaScript 函数,它调用 Web 服务以获取名称数组,然后 JavaScript onComplete 函数获取该数组并将其放入链表。

有什么方法可以在 Web 服务中创建链接列表并将其传回以供 JavaScript 代码使用,或者链接列表无法正确传输?

编辑:让我将我的问题重新表述为更有意义的问题。如果您有一个由类创建的自定义对象,请说....类用户,并且该类有一个名为用户名的变量。如果您将一个用户对象:objUser,从 C# 传回 JavaScript,那么 JavaScript 如何知道它可以访问 objUser.userName?它可以在这个用户对象上调用的可能方法呢?

【问题讨论】:

  • 没有链表这种东西。只有您的 JavaScript 代码可以创建您称为“链表”的东西。是什么让您认为您的“链表”无法正常传输?你试过但失败了吗?你尝试了什么?它是如何失败的?你的“链表”是什么样的?
  • @Matt:谷歌“JSON”。 BTW,你有没有认真使用 JavaScript 和 Web 服务一个多星期,却没有听说过 JSON?
  • @Matt:JavaScript 中的数组实际上是“记录在案的”。他们甚至在一些“书籍”中被提及。它们也不属于更高级的功能。
  • @Matt:在这里寻求帮助:但问题是什么?您需要获取 Web 服务的链接列表,或者您不了解 JavaScript 101?
  • @John - 随便读一下,你似乎对这个家伙真的怀有敌意。那又怎样——这家伙还没有听说过 JSON。也许评论“你能解释一下吗?”更好,或者忽略这个问题。

标签: c# javascript web-services linked-list


【解决方案1】:

我在创建 ASP.NET MVC 应用程序时遇到了类似的问题。基本上答案是 JavaScript 没有与 C# 中相同的类型概念。

假设您决定使用 JSON 在应用程序中的客户端和服务器之间传递数据。 JSON、XML、YAML 或其他格式的选择并不重要。

服务器端

在您的服务器端,在您的 C# 代码中,您可以执行以下操作(假设您使用的是某种 JSON 库):

var myLinkedList = JsonConvert.DeserializeObject<LinkedList>(json);

现在你有一个类型为 LinkedList 的 myLinkedList 变量。 myLinkedList 现在的行为类似于所有 LinkedList 实例。

客户端

但是在客户端站点上,在您的 JavaScript 代码中,您可能会执行以下操作:

function LinkedList(){
    //Constructor for your LinkedList
};

LinkedList.prototype = {
    //Various functions to operate on your linked list
};

你需要写这样的东西来反序列化从服务器返回的数据:

var linkedList = JSON.parse(jsonString);

请注意,没有办法表明您希望此反序列化数据进入您之前定义的 LinkedList“类”。 JavaScript 不理解 LinkedList 是一个“类”,您使用原型添加了功能。

你得到的是一个 JavaScript 对象。

解决此问题的一种方法是执行以下操作:

var linkedList = new LinkedList();
var deserializedObject = JSON.parse(jsonString);

linkedList.Items = deserializedObject.Items;

基本上,您必须将所有状态从反序列化对象复制到您的linkedList 变量中。

【讨论】:

  • JSON 代表“Javascript Object Notation”,是一种用于在 JavaScript 和后端代码之间交换对象的数据格式,反之亦然。在您的 C# 代码中使用 JSON.NET 之类的库,并在 www.json.org 上找到的解析库在您的代码中使用 JSON。
猜你喜欢
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 2014-07-30
相关资源
最近更新 更多