Javascript jQuery Datatables:将返回的JSON传递给变量

Javascript jQuery Datatables:将返回的JSON传递给变量,javascript,jquery,json,ajax,datatables,Javascript,Jquery,Json,Ajax,Datatables,我正在使用2个插件 提供分页 提供JSON搜索功能 这是我的问题和代码 $(document).ready(function() { var myjson; //Initialize Datatable var newtable = $('#pdf-results').DataTable({ "ajax": { "url": "http://www.example.com/home/Dummy_JSON_data.js",

我正在使用2个插件

提供分页 提供JSON搜索功能 这是我的问题和代码

$(document).ready(function() {
    var myjson;

//Initialize Datatable
    var newtable = $('#pdf-results').DataTable({
        "ajax": {
            "url": "http://www.example.com/home/Dummy_JSON_data.js",
            "dataSrc": function(json) {
             myjson: json; // This is the problem. I am not sure how to assign returned JSON to a variable ?
            }
        }
    });

// On button click, pass the returned JSON results to Defiant code below for searching and redraw Datatable.

    $("button").click(function() {
        var cname = $("#name").val();
        console.log('cname', cname);
        var cyear = $("#year").val();

        var rawXPath_cName = '//*[(contains(courseName, "' + cname + '") or contains(courseCode, "' + cname + '")) and contains(Year, "' + cyear + '")]';
        //console.log(rawXPath_cName);
        try {
            var reds = JSON.search(myjson, rawXPath_cName);
            var table_body = '';
            for (var i = 0; i < reds.length; i++) {
                table_body += '<tr>';
                table_body += '<td>' + reds[i].courseCode + '</td>';
                table_body += '<td>' + reds[i].courseName + '</td>';
                table_body += '<td>' + reds[i].Year + '</td>';
                table_body += '<td>' + reds[i].Trimester + '</td>';
                table_body += '<td><a href = ' + reds[i].pdfURL + '>Download map</a></td>';
                table_body += '</tr>';
            }
            $("tbody").empty();
            $("tbody").append(table_body);
            newtable.ajax.reload(); // Also, not sure if this is required or not. 
            //When the table redraws based on user search query, datatables doesn't display pagination correctly. It sometimes it shows 4-5 rows on page 1 and 4-5 rows on page 2, instead of showing upto 10 rows on page 1, which is the default behavior.

        } catch (e) {
            console.log('No results found');
        }
    });
});

我需要将Ajax调用返回的数据分配给一个变量,这样我就可以在definant.js代码中使用这些结果来搜索结果集。本质上,这段代码是myjson:json;上面的操作失败。

我希望我正确地阅读了API,但看起来您希望使用ajax.json-

根据,在本例中,它只需声明一个全局变量myjson,并在dataSrc函数中将JSON数据分配给它即可:

var newtable = $('#pdf-results').DataTable({
        "ajax": {
            "url": "http://www.example.com/home/Dummy_JSON_data.js",
            "dataSrc": function(json) {
                 myjson = json; // '=', not ':'
                 return json;
            }
        }
    });
在代码中,您试图使用:而不是=,将json分配给变量。也许这就是它失败的原因


另外,不要忘记在dataSrc函数中返回数据,以便DataTables可以使用它。

创建一个公共全局变量,然后当数据从ajax返回时,您可以将其传递给全局变量,对其运行函数,然后输出。稍后我将发布一个示例。谢谢@googabeast json.data returns undefined。另外,我只想使用Datatables,通过AJAX调用返回行。但是,使情况复杂化的是,还有另一个插件/库devigat.js需要使用JSON数据?log$'pdf-results'.datatable;在我看来,在所有插件中,API都包含所有返回的结果集以及基本配置。如果您使用FireFox,请尝试复制$'pdf-results'.DataTable并将结果粘贴到此处。在FireFox和Chrome中,此控制台为.log$'pdf-results'.DataTable;正在返回未定义的。此外,我还发现了一些可能有用的东西,但不确定如何在我的案例中实现这一点。。。。
var newtable = $('#pdf-results').DataTable({
        "ajax": {
            "url": "http://www.example.com/home/Dummy_JSON_data.js",
            "dataSrc": function(json) {
                 myjson = json; // '=', not ':'
                 return json;
            }
        }
    });