XMLHttpRequest发送JS对象

时间:2015-03-27 11:02:37

标签: javascript post xmlhttprequest

我尝试使用(POST)XMLHttpRequest发送JS对象,但我在PHP中没有获得POST数据。

此代码之前使用了Ajax请求,但我试图从服务器获取进度条的反馈(现在工作正常)。这就是我为什么要追加XMLHttpRequest的原因。

代码:

var dataRows = {
    'bewaarnaam': bewaarNaam,
    rows: {}
};

$(".rows").each(function (i, obj) {
    var row = $(obj);
    var rowName = $(row).attr('name');
    var chests = {};

    $(".cv_chest", row).each(function (i2, obj2) {
        chests[$(obj2).attr('id')] = {
            'counter': $(obj2).attr('chest_counter'),
                'height': $(obj2).attr('chest_height'),
                'db_id': $(obj2).attr('db_id')
        };
    });

    var top = $(row).css('top').replace("px", "");
    var left = $(row).css('left').replace("px", "");

    var rowData = {
        'name': $(row).attr('name'),
            'x': parseInt(left),
            'y': (parseInt(top - 100)),
            'rotation': rotation[$(row).attr('dir')],
            'db_id': $(row).attr("db_id"),
            'chests': chests
    };

    dataRows.rows[$(row).attr('id')] = rowData;
});

...

var xhr = new XMLHttpRequest();
xhr.open("POST", "{{ url('bewaarplaatsen/xhrTest/') }}", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(dataRows);

所以我的问题很简单......我如何通过XmlHttpRequest函数发送带有帖子的对象?

2 个答案:

答案 0 :(得分:10)

使用JSON:

var xhr = new XMLHttpRequest();
xhr.open("POST", "{{ url('bewaarplaatsen/xhrTest/') }}", true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.send(JSON.stringify(dataRows));

答案 1 :(得分:2)

你不能。 "一个对象"是一种存在于内存中的数据结构,只对它正在处理它的程序有意义。

您需要序列化数据(例如,使用application/x-www-form-urlencoded格式,或JSON,或XML,或许多其他选项),然后发送数据。

如果您尝试发送整个DOM元素(并且它不清楚您实际发送的数据是什么),那么将它们序列化将涉及将它们转换为HTML或(这通常会更好) option)它们代表的数据结构。