2013-03-20 2 views
0

Я пытаюсь отправить несколько массивов данных в мою функцию сохранения 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); 
     } 
    }); 
}; 

ответ

0

Я думаю, что вы будете лучше, если вы не stringify Ваши данные :

$.ajax({ 
    url: '/orders/add', 
    type: 'post', 
    data: {hardware: hardwareModel, service:serviceModel}, //   data:hardwarePayload, 
    contentType: 'application/json', 
    success: function (result) { 
     alert(result); 
    } 
}); 

(Обратите внимание, что я использую не стриженный hardwareModel и ServiceModel)

Таким образом, вы можете иметь JQuery обрабатывать данные (JSON) для запроса.

+0

Я получаю то же самое. Это Knockout.js, если это имеет значение. – ipengineer

0

Вы должны попробовать это

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); 
    } 
}); 
Смежные вопросы