post数组jquery序列化
我想将一个javascript数组发布到php页面。 数组必须是关联的。 我的结构看起来像这样:
当我创建数组时,它是:
var myArray = new Array(); $(".setttings").each(function(){ myArray[$(this).attr("id")] = $(this).val(); });
现在,当我发布那些我正在做的数据时:
$.ajax({ type: "POST", url: 'post.php", data: "settings="+myArray, });
问题是,如果我在post中查看设置,那么在firebug中它是空的。 我需要像这样传递的数组,因为我将把每个设置都放到php中并序列化它们并将它们插入到数据库中的一个字段中。 这样我就可以撤回设置并反序列化以重新填充这些字段。 我有什么想法可以做到这一点?
我建议两个改变。
首先,既然你想在PHP中使用关联数组,你应该在Javascript中使用Object而不是Array:
var myObject = new Object(); $(".setttings").each(function(){ myObject[$(this).attr("id")] = $(this).val(); });
接下来,您希望以稍微不同的方式将其传递给数据部分:
$.ajax({ type: "POST", url: "post.php", data: { settings: $.param(myObject) } });
重要的部分是$ .param,因为它将对象转换为一系列参数(适用于query_string)。
你需要在服务器上做的最后一件事是用PHP解析它:
parse_str($_POST['settings'], $settings);
现在,您可以像在JavaScript中一样访问$settings
变量中的所有内容。
$settings['id'] = "value";
只是对Dougs的一个小小的更新回答。
data: { settings: $.param(myObject) }
可以改为
data: myObject
jQuery ajax函数会自动将您的对象转换为字符串。