如何在JQuery中将MVC表单序列化为JSON

10 浏览
0 Comments

如何在JQuery中将MVC表单序列化为JSON

我想使用JQuery将我的MVC表单序列化为JSON,然后想在C#的后端反序列化一些值,例如输入字段的值,但是我无法将它序列化为JSON...请帮我解决这个问题。以下是我的代码。


0
0 Comments

问题的原因是因为使用了错误的选择器来序列化表单数据,导致无法将表单数据序列化为JSON。解决方法是使用正确的选择器来获取表单数据,并使用相关方法将其序列化为JSON。

以下是一篇关于如何在jQuery中将MVC表单序列化为JSON的文章:

在使用jQuery处理MVC表单时,我们经常需要将表单数据序列化为JSON格式。然而,有时候我们可能会遇到一些问题,比如无法正确地将表单数据序列化为JSON。这篇文章将介绍一个常见的问题以及解决方法。

问题的根源是在序列化表单数据时使用了错误的选择器。具体来说,使用了$(this).serializeArray();,而this指向的是一个不是表单的元素$('#btnsearch')。因此,我们需要使用正确的选择器来获取表单数据。

解决方法是使用$("#your_form_id).serializeArray();$("#your_form_id).serialize()来正确地序列化表单数据。通过使用正确的选择器,我们可以确保只序列化表单的数据,而不是其他元素的数据。

另一种更好的解决方法是使用$(this).closest("form").serializeArray()。这样,我们不需要知道或者拥有表单的ID,只需要找到最近的表单元素并将其序列化为JSON。

在序列化表单数据后,我们可以通过在服务器端使用C#进行反序列化操作,并从中获取特定的值。有许多关于如何将JSON反序列化为强类型对象的好的答案可以在StackOverflow上找到。

最后,我们需要确保表单数据被正确地序列化。可以通过检查序列化后的数据来验证。例如,我们可以使用以下代码来检查序列化后的数据:

var serializedData = "form = " + $("#your_form_id").serialize();
console.log(serializedData);

以上就是关于如何在jQuery中将MVC表单序列化为JSON的问题的原因和解决方法的整理。通过使用正确的选择器和方法,我们可以轻松地将MVC表单数据序列化为JSON,并在需要时获取特定的值。

0
0 Comments

问题的出现原因是:Asp.MVC框架在编码表单时,对于列表类型的属性会进行特殊编码,导致大部分解析器无法正确处理这种情况。

解决方法是使用名为"jquery.serializeToJSON"的序列化器,并配置选项"{ associativeArrays: false }"。该序列化器是唯一一个能够正确处理Asp.MVC编码的列表类型属性的解析器。

以下是问题的完整解决方法:

Yes, it's a very old question and there is a lot of similar questions with answers:

But this is asking specifically for Asp.MVC: I have tested most of the answers and they fail to serialize forms encoded the way Asp.mvc works, when there are property of list type that Asp.MVC forms encodes as 
   TheProperty[1].SubProperty=Value
   TheProperty[2].SubProperty=Value

The only serializer that treats that case correctly is this, when configured with the option

{ associativeArrays: false }

(thanks raphaelm22 for your solution!)

Been searching for this for hours, thank you! Posting ASP.NET form arrays to a JSON endpoint is impossible without this.

文章完整内容如上所示。

0