0

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

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

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

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

4

1 回答 1

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;

Basically, you'd have to copy over all the state from your deserialized object into your linkedList variable.

于 2009-06-20T17:04:46.840 回答