Jquery在函数中返回JSON对象

时间:2012-12-05 23:09:24

标签: jquery

我正在使用JSON执行rowcount并在我的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;
            });
        });
    }

但是每当我在脚本中调用该函数时,我都会得到“未定义”。有什么指针吗?

3 个答案:

答案 0 :(得分: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);
                });
            });
        }

答案 1 :(得分:0)

您的函数限制(关键字)不会返回任何值。

现有的返回运算符在$.each

的回调函数中返回值

您必须在限制函数的正文中添加return运算符。

答案 2 :(得分: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);
    });
}