gpt4 book ai didi

javascript - 通过 ajax 以 Yii2 形式传递附加数据

转载 作者:行者123 更新时间:2023-11-30 20:11:50 25 4
gpt4 key购买 nike

我有以下提交 Yii2 表单的 ajax 调用:

var form = $("#purchase-order-form");
$.ajax({
url: form.attr('action'),
data: form.serialize(),
type: 'post',
success: function(data) {
$('#modal').modal('hide');
callNotify(data);
}
});

这工作正常,但是我有额外的数据需要与表单数据一起传递。它是一个带有 json 编码的字符串,是我在我创建的数组中调用 JSON.stringify 创建的。

我尝试使用 .serializeArray() 而不是 .serialize() 并将附加内容推送到表单,如下所示:

var form = $("#purchase-order-form");
var table-data = tableToJson('.products-table');
var data = form.serializeArray();
data.push({table: table});

$.ajax({
url: form.attr('action'),
data: data,
type: 'post',
success: function(data) {
$('#modal').modal('hide');
callNotify(data);
}
});

当我看到控制台时,内容位于数组的末尾,但在我的 Controller 中它作为未定义传递。

我认为 yii 在让我加载它之前处理了不是来自模型的数据。

如何将数据与表单一起传递,同时仍然能够使用 $model->load() 加载模型?

最佳答案

您必须使用 namevalue 索引添加额外数据,其中 name 包含要发布的变量的名称,并且 value 是你要追加的变量的值

{名称:'数据',值:数据}

但在我建议实际代码之前,您需要注意一些事情,您不能命名包含 - 的变量,就像您声明的那样 var table-data = tableToJson('.products -表');

Hyphens can be mistaken as subtraction attempts. Hyphens are not allowed in JavaScript names.

然后您正在分配 data.push({table: table}); 而没有名称为 table 的变量。

所以你的完整代码应该是这样的

var form = $("#purchase-order-form");
var tableData = tableToJson('.products-table');
var data = form.serializeArray();
data.push({name: 'table', value:tableData});

$.ajax({
url: form.attr('action'),
data: data,
type: 'post',
success: function(data) {
$('#modal').modal('hide');
callNotify(data);
}
});

关于javascript - 通过 ajax 以 Yii2 形式传递附加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52322607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com