У меня есть наблюдаемый массив KnockoutJS, который подготовлен на стороне клиента:
var invoices = function(invoiced_article_number,invoiced_article_name){
this.invoicedArticleNumber = invoiced_article_number;
this.invoicedArticleName = invoiced_article_name;
};
Массив инициализируется при загрузке страницы:
this.selectedInvoices = ko.observableArray();
И, по нажатию кнопки, некоторые элементы помещаются в массив:
self.selectedInvoices.push(new invoices(self.selectedArticle().articleNumber,self.selectedArticle().articleName));
Я хочу передать этот наблюдаемый массив в PHP через пост-запрос Ajax, чтобы вставить данные в MySQL. Я пытался преобразовать его в объект сценария Java, используя следующий код, но я продолжаю получать нулевое значение в PHP.
var data = ko.toJS({"data":self.selectedInvoices});
Ajax Request:
$.ajax({
url: "URL.php",
type: "post",
data: {invoiceData: data},
cache: false,
success: function(returnedData) {}
});
PHP-код:
$invoice_data = trim($_POST['invoiceData']);
Вам нужно использовать ko.toJSON
сериализовать вашу view-модель во что-то, что можно отправить в PHP. Пытаться:
var data = ko.toJSON({"data":self.selectedInvoices});
Это отправит строку, представляющую сериализованное состояние вашей модели представления в PHP. Затем вы можете десериализовать его в PHP с помощью:
$invoice_data = json_decode(trim($_POST['invoiceData']));
Других решений пока нет …