通过Ajax将KnockoutJS可观察数组发布到PHP

时间:2015-07-19 12:48:05

标签: php knockout.js

我有一个在客户端准备的KnockoutJS可观察数组:

ApplicationController

在页面加载时初始化数组:

CourseController

并且,只需单击一个按钮,某些元素就会被推入数组中:

var invoices = function(invoiced_article_number,invoiced_article_name){
        this.invoicedArticleNumber = invoiced_article_number;
        this.invoicedArticleName = invoiced_article_name;
    };

我想通过Ajax post请求将此可观察数组传递给PHP,以便在MySQL中插入数据。我已经尝试使用以下代码将其转换为java脚本对象,但我在PHP中继续使用null。

this.selectedInvoices = ko.observableArray();

Ajax请求:

self.selectedInvoices.push(new invoices(self.selectedArticle().articleNumber,self.selectedArticle().articleName));

PHP代码:

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

1 个答案:

答案 0 :(得分:2)

您需要使用ko.toJSON将视图模型序列化为可以发送到PHP的内容。尝试:

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

这将向PHP发送一个表示视图模型的序列化状态的字符串。然后,您可以使用以下命令在PHP中对其进行反序列化:

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