jQuery:加载ajax并创建js对象

时间:2016-04-07 08:16:08

标签: jquery json ajax wordpress rest

我正在使用wp-rest api,我有这个json结构可以使用:

[
  {
    "id": 11,
    "title": {
      "rendered": "Test-Font"
    },
    "acf": {
      "schrift": [
        {
          "zeichen": "A",
          "anzahl": "23"
        },
        {
          "zeichen": "B",
          "anzahl": "46"
        },
        {
          "zeichen": "C",
          "anzahl": "42"
        },
        {
          "zeichen": "D",
          "anzahl": "49"
        },
        {
          "zeichen": "E",
          "anzahl": "31"
        },

…


 {
    "id": 12,
    "title": {
      "rendered": "Test-Font2"
    },
    "acf": {
      "schrift": [
        {
          "zeichen": "A",
          "anzahl": "20"
        },
        {
          "zeichen": "B",
          "anzahl": "12"
        },

…

我需要加载此结构的不同帖子,并为每个帖子创建一个对象,其中包含有关id和字体详细信息的信息(通过acf存储的数据)

目前我有这个脚本:

var schrift = {}

jQuery(function($){
    $.ajax({
        url: 'http://localhost/wordpress-dev/mi/wp-json/wp/v2/schriften/',  
        type: "GET",
        dataType: "json",
        success: function (data) {
            $.each(data, function() {   
                schrift.id = this.id;
                $.each(this.acf.schrift, function(key, value) {
                    schrift.value = value;
                });
                console.log (schrift);
            });
        }
    })
})

但是在新对象中只存储了一个信息,我如何遍历整个json结构并创建/存储它以使用它。

我需要的是:对于每个加载的帖子:有关id和acf存储的详细信息。

非常感谢

修改

是否可以在js对象中重构json对象,该对象的功能类似于关联数组:

喜欢这个

11      //ID
  A      // zeichen 
   23    // anzahl
  B 
   46
  C
   42

这样就可以得到这样的值: object['11'].A // should get 23

1 个答案:

答案 0 :(得分:1)

我认为,正如Barmar所说,你可以使用拥有你想要的一切的data变量。但是如果你想以任何理由重组json:

var schrifts = [];//array

jQuery(function ($) {
    $.ajax({
        url: 'http://localhost/wordpress-dev/mi/wp-json/wp/v2/schriften/',
        type: "GET",
        dataType: "json",
        success: function (data) {
            data.forEach(function (element) {
                var auxSchrift = {};
                auxSchrift.id = element.id;
                auxSchrift.acfs = [];//an array in the object
                element.acf.schrift.forEach(function (element) {
                    auxSchrift.acfs.push(element);
                });
                schrifts.push(auxSchrift);
            });
            console.log(schrifts);
        }
    });
});

我为javascript 原生一个$.each()更改了 jQuery的 forEach,但如果需要,可以放置$.each。< / p>