我正在尝试将 javascript 数组发布到 php 页面。该数组必须是关联的。我的结构如下所示:
<input id="test" value="1" class="settings" />
<input id="test1" value="2" class="settings" />
当我创建数组时,它是:
var myArray = new Array();
$(".setttings").each(function(){
myArray[$(this).attr("id")] = $(this).val();
});
现在,当我发布这些数据时,我只是在做:
$.ajax({
type: "POST",
url: 'post.php",
data: "settings="+myArray,
});
问题是,在 Firebug 中,如果我查看帖子的设置,它是空的。我需要像这样传递数组,因为我要将每个设置放入 php 中并序列化它们并将它们插入到数据库中的字段中。这样我就可以将设置拉出来并反序列化以重新填充这些字段。我有什么想法可以做到这一点吗?
最佳答案
我建议进行两项更改。
首先,由于您想要在 PHP 中使用关联数组,因此您应该使用对象,而不是 Javascript 中的数组:
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";
关于jquery - 发布数组 jquery 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1761035/