感谢阅读。我有一个难以理解的难题。我创建了一个jQuery插件,它基于JSON对象创建表行。在这个插件中,我希望有一个具有AJAX调用的分页,这会导致一个新的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 :(得分:0)
你不应该有一个插件访问用户没有传入的任何东西。如果你想让你的“插件”接受一个对象,那么你应该传递对该插件的引用。
$("#myDiv").makeTable({data:grid});
对于分页,您可以采用以下两种方法之一。简单的答案是在每次分页调用时重新运行你的插件。
$.ajax({
success: function(data) {
var grid //construct new object from data
$("#myDiv").makeTable({data:grid});
}
});
或者您可以让您的插件接受“数据源”。根据你对ajax源的意思,这可能是微不足道的(一次性获取所有数据),或者是棘手的(改变你的请求,一次只得到每个“页面”数据)。