php - 使用 ajaxForm 插件发布数组
问题描述
我正在使用这个插件-> http://jquery.malsup.com/form/
但我不能将数组发布到 PHP 脚本。
我在 beforeSubmit 函数中试过这个:
var concepts = new Array();
$('#myTable tbody tr td span.file').each(function(){
concepts.push($(this).text());
});
arr.push({name: 'concepts',value:concepts});
这在数据参数中:
data: {
concepts: function(){
var concepts = new Array();
$('#myTable tbody tr td span.file').each(function(){
concepts.push($(this).text());
});
return concepts;
}
}
但是我总是在 PHP 脚本中收到一个逗号分隔的字符串,而不是像在任何 ajax 调用中那样的数组。
[concepts] => 20 Bafles J8 DB Line Array, 4 Bafles J12 DB Line Array, 10 Bafles J SUB, 12 Bafles B2 DB, 2 Bummpers J, 4 Bafles Q7 DB Front Fill, 12 Monitores M4 DB, 38 Amplificadores, Sub Snake, 6 Bafles Q1 DB Side Fill, 6 Bafles Q SUB DB, Centro de Carga,Andamio de 4 mts. de altura brandeados por los 4 lados con lona mesh a 1,200 dpis
以上是以下结果:
print_r($_POST)
在此示例中,该数组有 2 个元素。
但是我发布的数据有逗号。我知道我可以编码为 JSON,然后在 PHP 脚本中解码,但我更喜欢发送和接收数组。有什么办法可以做到这一点?
我尝试将 processData 用作 false,但什么也没有:(
提前致谢!
解决方案
在您的beforeSubmit
函数示例中,您似乎在同一输入名称下推送多个值,而没有将其声明为数组(如果有意义的话)。请参阅更新的示例:
var concepts = new Array();
$('#myTable tbody tr td span.file').each(function(){
concepts.push($(this).text());
});
// Added square brackets to the `name` attribute
arr.push({name: 'concepts[]',value:concepts});
如果这不起作用,我会尝试在没有ajaxForm()
插件的情况下将数据发送到服务器。例如:
$('form').on('submit', function() {
var data = $(this).serializeArray();
$('#myTable tbody tr td span.file').each(function(){
data.push({name: 'concepts[]', value: $(this).text()});
});
$.ajax({
url: '/post/endpoint/example', // Change me!
method: 'post',
data: data
});
return false;
});
如果在没有插件的情况下发布有效,那么我会假设插件试图过于聪明并对表单数据进行一些奇怪的序列化。
推荐阅读
- jdbc - 如何使用融合属性中可用的转换方法将主题名称转换为较小的大小写
- javascript - MongoDB 搜索,跳过特殊字符
- javascript - 等待一个在一系列承诺中返回真实值的承诺
- string - 使用参数启动进程
- android - 蓝牙热敏打印机打印 GBP £ 符号
- ios - 如何将字符串解码为俄语字符
- r - 从不同的 R 脚本文件运行不同的 R 函数
- c# - Google Vision API 不工作 Grpc.Core.RpcException
- javascript - Firestore onSnapshot 返回未定义
- python - 对大型字节数组进行排序和解包的最快方法是什么?