JavaScript 对象转字符串

标签 javascript jquery ajax arrays

我正在尝试序列化一个 javascript 对象,但具有特定的形式(我认为它必须是一个方法)。 示例:

var media = new Object();
media.url = "localhost";
media.foo = "asd"

var data=new Object();
data.title = "myTitle";
data.description = "myDescription";
data.media.push(media);

我需要这样序列化数据:

"title=myTitle&description=myDescription&media[0].url=localhost&media[0].foo=asd"

重要的是数组的写入方式。

最佳答案

查看Convert a JSON object's keys into dot notation pathsConvert complex JavaScript object to dot notation object 。您可以轻松地调整它们来处理特殊的数组键:

function transform(obj) {
    var result = {};
    recurse(obj, "");
    return result;
    function recurse(o, name) {
        if (Object(o) !== o)
            result[name] = o;
        else if (Array.isArray(o))
            for (var i=0; i<o.length; i++)
                recurse(o[i], name+"["+i+"]");
        else // if plain object?
            for (var p in o)
                recurse(o[p], name?name+"."+p:p);
    }
}

然后您可以申请$.param根据结果​​获取 URL 编码等:

$.param(transform(data))

(或者只是将其传递到 $.ajax 的数据参数中)。

关于JavaScript 对象转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351420/

相关文章:

javascript - 造型 polymer 纸 slider

javascript - 值不添加/减去正确的数量和 if/else 语句错误

php - Jquery Ajax 请求和 PHP

javascript - 滚动内部div

javascript - 无法关闭 JSFiddle 上的对话框

javascript - Bootstrap Carousel Caption 在转换完成后移动

javascript - 如何在 jQuery 中进行 .wrap?

javascript - 数组到 JSON 字符串数组

javascript - Leaflet.js 从 AJAX 添加层

php - 点击链接后 JQuery 提交表单