从jQuery AJAX调用返回Javascript变量,覆盖以前的Javascript/JSON对象
谢谢你的阅读。我有一个难题,我似乎可以解决。我创建了一个jQuery插件,它基于JSON对象创建表行。在这个插件中,我希望有一个带有AJAX调用的分页,它将生成一个新的JSON对象,该对象具有相同的变量名和不同的键/值对(我想覆盖它)。成功后,我可以向数据发出警报,但无法访问我发出警报的数据中的变量从jQuery AJAX调用返回Javascript变量,覆盖以前的Javascript/JSON对象,javascript,jquery,json,Javascript,Jquery,Json,谢谢你的阅读。我有一个难题,我似乎可以解决。我创建了一个jQuery插件,它基于JSON对象创建表行。在这个插件中,我希望有一个带有AJAX调用的分页,它将生成一个新的JSON对象,该对象具有相同的变量名和不同的键/值对(我想覆盖它)。成功后,我可以向数据发出警报,但无法访问我发出警报的数据中的变量 var grid = { "name": "test", "columns": [ {"name":"col1"}, {"name":"c
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.
var-grid={
“名称”:“测试”,
“栏目”:
[
{“name”:“col1”},
{“name”:“col2”}
],
“行”:
[
{“name”:“col1”,“value”:“text1”},
{“name”:“col2”,“value”:“text2”}
]
}
$(“#myDiv”).makeTable() 您不应该让插件访问用户未传入的任何外部内容。如果你想让你的“插件”接受一个对象,那么你应该传递一个对插件的引用
$("#myDiv").makeTable({data:grid});
对于分页,可以采用两种方法之一。简单的答案是在每次分页调用时重新运行插件
$.ajax({
success: function(data) {
var grid //construct new object from data
$("#myDiv").makeTable({data:grid});
}
});
或者你可以让你的插件接受一个“数据源”。根据您所说的ajax源代码的含义,这可能是琐碎的(一次获取所有数据),也可能是棘手的(更改您的请求以一次只获取每个“页面”的数据)。如果您想在代码中留下注释,您可以使用实际注释/
,这样我们就可以看到您真正运行的是什么。如果该代码实际运行(正如您在第一个警报中所说的),并且您接下来声明了一个名为grid
的变量,那么您的下一个警报将工作。但是,我怀疑您实际上是在尝试访问数据的属性,它是一个字符串,而不是一个对象,因为您指定了数据类型:“script”
。谢谢您的输入。我有几个理由来解释为什么我要做我正在做的事情。这是一个本地应用程序,不是公共应用程序。我试过你的想法,但根本没用。有人知道重写全局JSON对象的更好方法吗?哦,多亏了那些认为我没有为此投入足够的研究精力的人。。。Booooo…我想如果你想在这方面得到任何帮助,你必须发布一些更完整的代码。在没有实际代码的情况下,我们所能提供的只是风格上的建议,我认为您在实现这些建议时会遇到挑战。
$.ajax({
success: function(data) {
var grid //construct new object from data
$("#myDiv").makeTable({data:grid});
}
});