【问题标题】:post array jquery serialize发布数组 jquery 序列化
【发布时间】:2009-11-19 05:16:16
【问题描述】:

我正在尝试将 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,
});

问题是,在萤火虫中,如果我查看设置的帖子,它是空的。我需要像这样传递的数组,因为我要将这些设置中的每一个都带入 php 并将它们序列化并将它们插入到数据库中的字段中。这样我就可以将设置拉出并取消序列化以重新填充这些字段。有什么想法可以做到这一点吗?

【问题讨论】:

    标签: jquery arrays post serialization


    【解决方案1】:

    我会推荐两个更改。

    首先,由于您需要 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";
    

    【讨论】:

    • 实际上我还有一个问题,如果我想在查询中添加一个 id 我该怎么做。例如 id=1
    • 是否要将 id 添加到整个请求中?如果是这样,只需将其放在 settings 参数旁边,如下所示:data: { settings: ... , id: 1} 我是否正确理解了您的问题?
    • 感谢完美。我试图像往常一样添加它,但现在我明白了。感谢您的宝贵时间
    • 感谢道格,这对我来说是一个小奇迹 :)
    【解决方案2】:

    只是对 Dougs 答案的一个小更新。

    data: {
            settings: $.param(myObject)
        }
    

    可以改成

    data: myObject
    

    jQuery ajax 函数会自动将你的对象变成一个字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2012-12-07
      相关资源
      最近更新 更多