在 jQuery [ duplicate ]中序列化为 JSON

代码小屋 课程设计 1

这个问题在这里已经有了答案:

我需要将对象序列化为 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>

回复

共1条回复 我来回复
  • 源码工坊
    这个人很懒,什么都没有留下~
    评论

    上述解决方案没有考虑的一件事是,如果您有一组输入但只提供了一个值。

    例如,如果后端需要一个 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;};
    
    0条评论

发表回复

登录后才能评论