干草伙计们,我正在做一些工作,我有很多表格。似乎这些不是传统方式“发布”(即使用提交按钮)。我需要一种方法来在单击链接时收集所有表单数据的所有名称和值(document.location然后用于重定向)。
我希望名称保持不变,以便我可以使用简单的PHP脚本来处理数据。
有什么建议吗?
答案 0 :(得分:7)
我可能会建议Serialize Form to JSON:
$.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; };
然后你可以这样做:
var formArray = $("#myform").serializeObject();
答案 1 :(得分:1)
$.fn.valuesArr = function()
{
var a = [];
jQuery.each(this, function(i, field){
a.push($.trim(field.value));
});
return a;
}
使用:
var myArr = $('input', $parentJQelem).valuesArr();
答案 2 :(得分:0)
您可以使用类似我的提交帮助程序作为基础
function submit(form) {
var form = $(form);
$.ajax(
{ data: $.param( form.serializeArray()),
dataType:'script',
type:'post',
url: form.attr("action")});
}
而不是'serializeArray()'我会使用'serialize()'而不是使用ajax发布它你可以做任何你想做的事。
抱歉,现在没有更多时间,但希望这段代码可以帮到你。
答案 3 :(得分:0)
cletus在效率方面的答案是最好的。
然而,这是另一个不依赖于JSON的工作解决方案:
//this is my object I will fill my array with
function myObject(name, value)
{
this.name = name;
this.value = value;
}
var arr = $.map(
$('span'), function (item) {
var $item = $(item); //no need to $(item) 2 times
return new
myObject(
$item.attr("name"), //name field
$item.text() //value field
);
}
);
arr
将是myObject
的数组,每个数组都包含name
属性和value
属性。
使用您的选择器代替$('span')
。
答案 4 :(得分:0)
但所有这些功能都不能在输入中使用数组名称。
示例 -
这对于提交帖子表格是正确的,但在序列化时我得到
形式[式[]]:2
这不正确 - 我需要 - 表格[type] []:2