0

我正在寻找一种方法将使用 JQuery 收集的数组中的数值移动到一个新数组中,以便 Perl 获取。这可能吗?是否有首选方法?

JQuery Array: addVssID 
Hash array: $self->input->vssID
  • addVssID 的值 (1, 11, 25) 表示已在 HTML 表单中选中的复选框。单击“保存”按钮时会触发此收集/计算。
  • 在程序的其他地方 $self->input 被新创建来保存 Perl 稍后处理并保存到 MySQL 数据库的各种供应商信息。我正在跟踪日志文件中的值,当我在 Perl 中使用 DUMPER($self) 时看不到我的预期结果,尽管我可以看到填充了其他值。
  • 我基本上是在查看现有的遗留代码,根据自己的需要复制/编辑它,但它似乎不起作用。

这是我的 JSON:老实说,我真的不明白它是如何工作的。

var ShippingInput = $('<input type="hidden" name="Shipping" />');     
$ShippingInput.val(JSON.stringify(getShipping()));
$form.append($ShippingInput);

在 Perl 的另一端,我等待着结果:

my $Shipping = [];
eval { $Shipping = JSON::from_json($self->input->{'vendor'}->{'Shipping'});
};

最终我想将数组值移动到 MySQL 表中。另一种选择是将数组推送到 MySQL 表中,然后将其拉出到 Perl 中进行处理。我不知道这是否会改变任何东西,但我们也有可用的模板工具包。

更新/解决方案:采用 JSON 路线,我从复选框中获取动态值 (value='Shipping_###'),剥离文本并将数字添加到数组中。我仍然对 JSON/JQUERY 的工作方式感到不安,但这里是 get 函数,它似乎正在工作:

function getShipping() {
// called onSave from submitForm()
var shipping = [];

$('.Shipping').each(function(i, Shipping) {
    shipping.push($(Shipping).attr('id').replace('Shipping_', ''));
});
return shipping;

}

4

1 回答 1

3

您可以执行以下两项操作之一:

  1. 正如 Barmar 所指出的,将整个数据集(使用 jQuery)收集到单个 JSON 数据结构中。然后将其序列化(编码)为字符串,并将该字符串作为 POST 参数传递给您的 Perl Web 后端代码。在 Perl 中,使用模块对其进行解码JSON(它将能够从 JSON 构建一个 Perl 数据结构,以相同的方式映射它)。

  2. 创建一组输入字段(隐藏与否,取决于您的 web 应用程序)。然后在 Perl 中读取它们,并手工制作数据结构。

    很难提供更具体的帮助,因为您没有提供具体的示例代码来使用

于 2013-05-06T16:37:46.077 回答