2012-04-26 52 views
-1

感谢您的阅读。我有一个谜,我可以看起来舔。我创建了一个基于JSON对象创建表行的jQuery插件。在这个插件,我希望有一个AJAX调用分页,导致一个新的JSON对象具有相同的变量名称与不同的键/值对(我想覆盖它)。成功后,我可以提醒数据,但无法访问我正在提醒的数据中的变量。从jQuery返回Javascript变量AJAX调用覆盖以前的Javascript/JSON对象

var grid = { 
    "name": "test", 
    "columns": 
    [ 
     {"name":"col1"}, 
     {"name":"col2"} 
    ], 
    "rows": 
    [ 
     {"name":"col1", "value":"text1"}, 
     {"name":"col2", "value":"text2"} 
    ] 
} 
$("#myDiv").makeTable(); <-- plugin that creates table based off this JSON 
// if I alert grid.columns[0].name I get col1 no problem. 

然后我做了一些jQuery的东西循环并创建一个表,没有问题... ...

那么我的这个代码块从我makeTable()插件中:

$.ajax({ 
url: 'get_json-pages.php', 
type: "GET", 
data: form_data, <-- my string 
dataType:"script", <-- set it to script because the output is just the javascript 
success: function(data) { 
      alert(data); <-- alerts perfectly, looks like the same JSON above but 
      with different key/value pairs 
      the alert looks like this: 
      var grid = { 
       "name": "test", 
       "columns": 
       [ 
        {"name":"col3"}, 
        {"name":"col4"} 
       ], 
       "rows": 
       [ 
        {"name":"col3", "value":"text3"}, 
        {"name":"col4", "value":"text4"} 
       ] 
      } 

      now when I do this: 
      alert(grid.columns[0].name); 
      it is a blank alert? 
} 
}); 

如何使用AJAX JSON覆盖JSON对象并重新加载我的插件以显示新的数据集?

在此先感谢!

+0

如果你想在你的代码中留下评论,你可以使用实际的评论''//所以我们可以看到你真的在运行。如果该代码实际运行(就像你说的它与第一个警报一样),然后你下一个声明一个名为'grid'的变量,那么你的下一个警报将工作[jsFiddle](http://jsfiddle.net/GfCKW/)。但是,由于您指定了'dataType:“脚本”',所以我怀疑您实际上是在尝试访问'data'的属性,这是一个字符串,而不是一个对象。 – Sinetheta 2012-04-26 22:54:19

回答

0

你不应该有一个插件访问任何超出自身范围的用户没有传入的内容。如果你想让你的“插件”接受一个对象,那么你应该传递一个引用给插件。

$("#myDiv").makeTable({data:grid}); 

对于分页你可以采取两种方法之一。简单的答案是重新运行你的插件与每个分页调用。

$.ajax({ 
success: function(data) {  
    var grid //construct new object from data 
    $("#myDiv").makeTable({data:grid}); 
} 
}); 

或者你可以让你的插件接受一个“数据源”。根据ajax源代码的含义,这可能是微不足道的(一次获取所有数据),或者棘手(改变你的请求一次只获取每个“页面”数据)。

+0

感谢您的输入。为什么我正在做我正在做的事情,我有几个原因。它是一个本地应用程序,不公开。我尝试了你的概念,它根本不起作用。有谁知道重写全局JSON对象的更好方法吗?哦,并感谢谁曾经以为我没有投入足够的研究努力... ... Booooo ... – Paul 2012-04-27 00:37:08

+0

我想如果你想在这一个任何帮助,你将不得不张贴一些更完整的代码。所有我们可以提供没有实际的代码是风格建议,我认为你将有实施的挑战。 – Sinetheta 2012-04-27 05:22:38