【问题标题】:jQuery getJSON not working,getting Unresponsive Script errorjQuery getJSON 不起作用,出现无响应的脚本错误
【发布时间】:2012-03-02 22:07:52
【问题描述】:

我正在尝试使用 getJSON 方法将一些 JSON 数据加载到表中,但我在 Firefox 中遇到了无响应的脚本错误,在 Chrome 中它崩溃了。JSON 对象有超过 50,000 个项目,我确定这是导致脚本失败。我打算将 JSON 数据注入一个表中,并使用 jquery dataTables 插件进行分页、排序和过滤。

有人可以建议一种更好的方法来做我想做的事情吗?

$(document).ready(function(){
  $.getJSON("items.php",function(result){
    $.each(result, function(i, field){

       var html = '<tr><td>' + field['id'] + '</td>';
       html+='<td>'+ field['name'] + '</td>';
       html+='<td>'+ field['price'] + '</td></tr>';

       $('#itemsTable').append(html);


    });
  });
}); 

我现在已将代码更改为此,但现在我收到错误 json.aaData is UNDEFINED ..js/jquery.dataTables.min.js

$('#tbData').dataTable( {
                    "bProcessing": true,
                    "bServerSide": true,
                    "sAjaxSource": 'items.php'
                } );

【问题讨论】:

  • 也许尝试只追加一次(循环外)
  • 也许问题是响应正文的重量,但是...您确定您的 items.php 脚本返回 Content-Type: application/json Header?
  • 您确定您的items.php 工作正常吗?在浏览器窗口中运行 items.php 时收到正确的 JSON 吗?
  • 我对 php 文件了解不多,但它有 echo json_encode($dataarrary);最后,这还不足以返回 JSON 吗?是的,当我在浏览器中运行文件时,我可以查看 JSON

标签: jquery json


【解决方案1】:

绝对不需要解析自己的表,然后在其上触发数据表。将数据直接传递给 datatables 插件,让它使用 API 中的数据源选项处理它

您对每一行的追加效率非常低。数据表会将您的大部分数据保存在一个对象中,并且只会为所需的视图生成足够的 html

【讨论】:

  • 感谢您的回答,我尝试按照您的建议进行操作,我已将代码更改为您所说的,但现在我收到错误 json.aaData is UNDEFINED../js/jquery.dataTables.min。 js
  • 不能从中看出太多,如果使用 php,API 中有一个很好的 CRUD 示例。还有json响应示例
【解决方案2】:

一个选项是使用分页 100 获取数据,在 100 之后直到所有数据。

$(document).ready(function(){
  $.getJSON("items.php?start=0&end=100",function(result){
    $.each(result, function(i, field){

       var html = '<tr><td>' + field['id'] + '</td>';
       html+='<td>'+ field['name'] + '</td>';
       html+='<td>'+ field['price'] + '</td></tr>';

       $('#itemsTable').append(html);


    });
  });


$.getJSON("items.php?start=100&end=200",function(result){
    $.each(result, function(i, field){

       var html = '<tr><td>' + field['id'] + '</td>';
       html+='<td>'+ field['name'] + '</td>';
       html+='<td>'+ field['price'] + '</td></tr>';

       $('#itemsTable').append(html);


    });

}); 

到此为止..

或使 forach 增加开始和结束。

这里你可以一个接一个或连接字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    相关资源
    最近更新 更多