1

我对对象和 OOP 很陌生。我真的不知道如何解释它,但我会尝试。

所以我试图通过 JS 读取 JSON,JSON 是从 PHP 传递的。如果所有信息都在同一个 html 页面上,这将很容易,但我正在尝试一些我也是新的东西。

所以让我展示我的代码......

首先是 app.js 中的 JS

   var Donors = function(){
    var api = this.list;

    $(document).ready(function(){
      $.getJSON(api, function(data){
        var donorObj = data.payload;
        $.each(donorObj, function(i, donor){
          //console.log(donor.ign);
        });
      });
    });

   }

想要这部分做的是从我给它的 JSON 中读取,并在文档准备好时 console.log 每个名称(或donor.ign)。

在 html 页面上,或 header.php

<script>
$(function(){
    var list = <?php cbProxy(); ?>;
    var Dons = new Donors();
    Dons.list = list;
    });
</script>

列表中的数据是下面的 JSON。您已经知道其余部分的作用,它只是将 JSON 传递给Donors()函数。

JSON 示例:

{
"code": 0,
"payload": [
{
"time": 1349661897,
"packages": [
"49381"
],
"ign": "Notch",
"price": "15.99",
"currency": "USD"
}

我习惯于制作函数并在同一页面或文件上调用它,这是我第一次做这种函数。我怎样才能让函数与我发送的数据一起运行,所以console.log()每个名字都是如此?

我确实尝试过

console.log(Donors());

其中只记录了undefined.

新代码:

应用程序.js

   var Donors = function(api){

    this.list = api;

    $(document).ready(function(){
      $.getJSON(this.list, function(data){
        var donorObj = data.payload;
        $.each(donorObj, function(i, donor){
          console.log(donor.ign);
        });
      });
    });

   }

index.php/内联脚本

<script>
$(function(){
    var list = <?php cbProxy(); ?>;
    var dons = new Donors(list);
});
</script>
4

2 回答 2

1

如果你执行

var Dons = new Donors();
Dons.list = list;

然后在将某些内容分配给属性之前调用构造函数。list这意味着您的api变量将是undefined,只要您没有在Donors继承的原型对象上定义一个。相反,将列表作为参数传递给构造函数:

function Donors(api) {
    this.list = api;
    // do something
}
var dons = new Donors(list);
于 2012-12-17T17:12:26.813 回答
0

我认为应该是这样的:

$.getJSON(api, function(data){
    $.each(data.payload, function(i, donor){
       console.log(donor.ign);
    });
});

试试这个,看看是否有效。

于 2012-12-17T17:11:45.613 回答