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 から読み取って、ドキュメントの準備ができたらそれぞれの名前 (または donor.ign) を console.log に記録することです。

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た。

新しいコード:

app.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変数は になります。代わりに、リストをパラメーターとしてコンストラクターに渡します。undefinedDonors

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 に答える