【问题标题】:jQuery Each Loop to push data into JSON ObjectjQuery Each Loop 将数据推送到 JSON 对象中
【发布时间】:2022-01-05 19:52:01
【问题描述】:

谁能建议我在这里做错了什么。我在屏幕上有几个元素,类 .cp_select。我需要遍历它们并获取“x”和“y”的属性。这本身就可以正常工作。然后我需要用子数组子数组positions 组装一个JSON obj,并将每个循环x/y 集推入其中。然后,我将在 PHP 中将数组与 json_decode() 一起使用,循环遍历该子 positions 并在 PHP 端处理它。我似乎无法弄清楚。有什么想法吗?

$(".pix_select_btn").click(function() {
    
    var poz = {}
    var poz_xy = {}
    $(".cp_select").each(function() {
        
        var pix = $(this)
        poz_xy = {"x" : pix.attr("x"), "y" : pix.attr("y")};
        poz['positions'].push(pos_xy)
                    
    });
    alert(JSON.stringify(poz))
    console.log();
})

【问题讨论】:

  • 您必须先创建poz.positions 属性,然后才能推送它。
  • var poz = {positions: []}
  • 你没有收到错误提示undefined 没有push 的属性吗?
  • 嗨,Barmar - 是的,我是。我应该提到这一点。只是不知道如何纠正它
  • 啊,明白了。谢谢你。我也有一个错字。还在清理中

标签: jquery arrays object push each


【解决方案1】:

你必须先创建数组,然后才能推入它。

$(".pix_select_btn").click(function() {

  var poz = {positions: []}
  $(".cp_select").each(function() {

    var pix = $(this)
    var poz_xy = {
      "x": pix.attr("x"),
      "y": pix.attr("y")
    };
    poz.positions.push(pos_xy)

  });
  console.log(JSON.stringify(poz));
})

您也可以使用map() 来简化它。

$(".pix_select_btn").click(function() {

  var poz = {
    positions: $(".cp_select").map(function() {
      var pix = $(this)
      return {
        "x": pix.attr("x"),
        "y": pix.attr("y")
      };
    }).get(); // .get() converts from jQuery object to array
  }
  console.log(JSON.stringify(poz));
})

【讨论】:

    【解决方案2】:

    记住PHP运行在服务器端,JS运行在客户端,所以你不能在PHP中使用var poz。

    您需要发送 XHR 请求以捕获服务器端的值。

    【讨论】:

    • 感谢您的信息泰
    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多