knockout.js — Отправка наблюдаемого массива KnockoutJS в PHP через Ajax

У меня есть наблюдаемый массив 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']);

1

Решение

Вам нужно использовать ko.toJSON сериализовать вашу view-модель во что-то, что можно отправить в PHP. Пытаться:

var data = ko.toJSON({"data":self.selectedInvoices});

Это отправит строку, представляющую сериализованное состояние вашей модели представления в PHP. Затем вы можете десериализовать его в PHP с помощью:

$invoice_data = json_decode(trim($_POST['invoiceData']));
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]