JS AJAX发送多个数据数组
问题描述:
我想在我的ajax保存函数中发送多个数据数组。JS AJAX发送多个数据数组
我可以单独做每个数组,如data:hardwarePayload
,它会工作。如果我这样做{hardware: hardwarePayload, service:servicePayload}
我得到非常奇怪的JSON输出。看起来像:
硬件=%5B%7B%22hardwareName%22%3A%221%22%2C%22hardwareQuantity%22%3A%22%22%2C%22hardwareBYOD%22%3A%22%22 %7D%5D &服务=%5B%7B%22serviceName%22%3A%223%22%2C%22serviceQuantity%22%3A%22%22%7D%5D
我真的需要两个阵列一个硬件和一个服务,所以我可以分别抓住每一个。
我的代码看起来是这样的..
self.save = function (form) { var hardwareModel = []; var serviceModel = []; ko.utils.arrayForEach(self.services(), function (service) { serviceModel.push(ko.toJS(service)); }); ko.utils.arrayForEach(self.hardwares(), function (hardware) { hardwareModel.push(ko.toJS(hardware)); }); //allModel.push({accountId: ko.toJS(account)}); var hardwarePayload = JSON.stringify(hardwareModel); var servicePayload = JSON.stringify(serviceModel); //alert(JSON.stringify(serviceModel) +JSON.stringify(allModel)); $.ajax({ url: '/orders/add', type: 'post', data: {hardware: hardwarePayload, service:servicePayload}, // data:hardwarePayload, contentType: 'application/json', success: function (result) { alert(result); } }); };
答
我想你会好起来的,如果你不字符串化您数据:
$.ajax({
url: '/orders/add',
type: 'post',
data: {hardware: hardwareModel, service:serviceModel}, // data:hardwarePayload,
contentType: 'application/json',
success: function (result) {
alert(result);
}
});
(请注意,我正在使用而不是 stringified hardwareModel and serviceModel)
这样你就可以让jQuery处理请求的(json)数据。
答
你应该试试这个
var hardwarePayload = hardwareModel;
var servicePayload = serviceModel;
var postData = {'hardware': hardwarePayload, 'service':servicePayload};
var postData = JSON.stringify(postData);
alert(postData);
$.ajax({
url: '/orders/add',
type: 'post',
data: postData,
contentType: 'application/json',
success: function (result) {
alert(result);
}
});
我收到了同样的事情。这是Knockout.js,如果这很重要.. – ipengineer 2013-03-20 23:16:06