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

您的函数 limit(keyword) 不返回任何值。

现有的返回运算符在的回调函数中返回值$.each

您必须在限制函数的主体中添加返回运算符。

于 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 回答
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 回答