XMLHttpRequest 发送 JS 对象
XMLHttpRequest send JS Object
我正在尝试使用 (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 函数发送带有 post 的对象?
使用JSON:
var xhr = new XMLHttpRequest();
xhr.open("POST", "{{ url('bewaarplaatsen/xhrTest/') }}", true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.send(JSON.stringify(dataRows));
编辑:
您还可以使用较新的 fetch API,请参阅 。
你不能。 "An object" 是一种存在于内存中的数据结构,只对它所处理的程序有意义。
您需要序列化数据(例如使用 application/x-www-form-urlencoded
格式,或 JSON,或 XML,或许多其他选择)并改为发送。
如果您尝试发送整个 DOM 元素(并且不清楚您尝试发送的数据实际上是什么),那么序列化它们将涉及将它们转换为 HTML 或(这通常是更好的选择)它们代表的数据结构。
我正在尝试使用 (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 函数发送带有 post 的对象?
使用JSON:
var xhr = new XMLHttpRequest();
xhr.open("POST", "{{ url('bewaarplaatsen/xhrTest/') }}", true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.send(JSON.stringify(dataRows));
编辑:
您还可以使用较新的 fetch API,请参阅
你不能。 "An object" 是一种存在于内存中的数据结构,只对它所处理的程序有意义。
您需要序列化数据(例如使用 application/x-www-form-urlencoded
格式,或 JSON,或 XML,或许多其他选择)并改为发送。
如果您尝试发送整个 DOM 元素(并且不清楚您尝试发送的数据实际上是什么),那么序列化它们将涉及将它们转换为 HTML 或(这通常是更好的选择)它们代表的数据结构。