在 jQuery [ duplicate ]中序列化为 JSON
课程设计
1
这个问题在这里已经有了答案:
- 将对象序列化为 JSON 3 个回答
我需要将对象序列化为 JSON。我正在使用 jQuery。有没有“标准”的方法来做到这一点?
我的具体情况:我定义了一个数组,如下所示:
var countries = new Array();countries[0] = 'ga';countries[1] = 'cd';...
我需要把它变成一个字符串来传递给
$.ajax()
这样的:
$.ajax({ type: "POST", url: "Concessions.aspx/GetConcessions", data: "{'countries':['ga','cd']}",...
</div>
-
上述解决方案没有考虑的一件事是,如果您有一组输入但只提供了一个值。
例如,如果后端需要一个 People 数组,但在这种特殊情况下,您只是在与一个人打交道。然后做:
<input type="hidden" name="People" value="Joe" />
然后使用以前的解决方案,它只会映射到以下内容:
{ "People" : "Joe"}
但它真的应该映射到
{ "People" : [ "Joe" ]}
为了解决这个问题,输入应该是这样的:
<input type="hidden" name="People[]" value="Joe" />
您将使用以下功能(基于其他解决方案,但扩展了一点)
$.fn.serializeObject = function() {var o = {};var a = this.serializeArray();$.each(a, function() { if (this.name.substr(-2) == "[]"){ this.name = this.name.substr(0, this.name.length - 2); o[this.name] = []; } if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; }});return o;};
发表回复