1

JSONを使用して行数をカウントし、phpファイルで次のような出力を取得しますjson_data2.php

{"limit": [{"rows":"127"}]}

ここで、Javascript / Jquery関数を使用してこのファイルを呼び出し、行を取り戻そうとします(127)。私はこのようにそれをするふりをします:

function limit(keyword){
        $.getJSON("json_data2.php?l="+keyword,function(data)
        {
            $.each(data.limit,function(data){
                var rows = data.rows;
                return rows;
            });
        });
    }

しかし、スクリプトで関数を呼び出すたびに、「未定義」になります。ポインタはありますか?

4

3 に答える 3

0

各ステートメントを修正する必要があります。this問題のデータを参照するために追加されました。

http://jsfiddle.net/twGQh/

limit(keyword, function(rows) {
    // your rows have loaded
});

  function limit(keyword, cb){
            $.getJSON("json_data2.php?l="+keyword,function(data)
            {

                $.each(data.limit,function(){
                    var rows = this.rows;
                    console.log(rows);
                    cb(rows);
                });
            });
        }
于 2012-12-05T23:13:42.723 に答える
0

関数の制限(キーワード)は値を返しません。

既存の戻り演算子は、のコールバック関数で値を返します$.each

極限関数の本体にreturn演算子を追加する必要があります。

于 2012-12-05T23:14:12.767 に答える
0

これ$.getJSONは、非同期であるため、呼び出しlimit()ても何も返されないためです(便利です)。

limit()これを行う方法は、次のようなコールバック関数を提供することです。

limit(keyword, function(rows) {
    // your rows have loaded
    $.each(rows, function() {
        // process each row here
    });
});

function limit(keyword, cb)
{
    $.getJSON('json_data2.php?l=' + encodeURIComponent(keyword), function(data) {
        // invoke the callback function that was passed
        cb(data.limit);
    });
}
于 2012-12-05T23:15:11.990 に答える