$.fn.fieldValues = function(successful)
{
var values = {};
this.each(function()
{
if(strstr(this.name, '[]', true))
{
var tmp = this.name.replace(/\[\]/, '');
if(typeof values[tmp] == 'undefined') values[tmp] = {};
var x = 0;
while(typeof values[tmp][x] != 'undefined') x++;
values[tmp][x] = $(this).val();
}
else values[this.name] = $(this).val();
});
return values;
}
问题是我在php端得到这个数组:
array(['tagCloud'] => '[object Object]', ['status'] => 'Active'.....)
为什么tagCloud是一个对象,如何将整个关联数组发布到php?
答案 0 :(得分:1)
将它编码为json对象,然后在php(json_decode)解码它吗?
答案 1 :(得分:1)
听起来你需要 SerializeArray ,它的工作方式类似于 Serialize ,但会创建一个名称/值对象数组。
然后你应该把它变成一个JSON字符串并传递给你的php进程。然后,php可以将其反序列化为一个名称/值对象数组,您可以随意使用这些数据。
//build json object
var dataArray = $.makeArray($("form").serializeArray());
然后作为帖子传递:
// make ajax call to perform rounding
$.ajax({
url: "/Rounding.aspx/Round/12",
type: 'POST',
dataType: 'html',
data: $.toJSON(dataArray), <-- call to jQuery plug in
contentType: 'application/json; charset=utf-8',
success: doSubmitSuccess
});
这是我用来序列化数据的JSON库的link
答案 2 :(得分:0)
看起来就像你正在重新发明jQuery.fn.serialize
一样。 jQuery已在名称中处理"[]"
的输入:
<form>
<input type="hidden" name="foo[]" value="1" />
<input type="hidden" name="foo[]" value="2" />
<input type="hidden" name="foo[]" value="3" />
</form>
<script>
alert(unescape($('form').serialize())) // "foo[]=1&foo[]=2&foo[]=3"
</script>
php会将其解析为数组OOTB。