【发布时间】:2013-07-21 01:01:49
【问题描述】:
我正在使用 .getJSON 向我的 PHP 服务器发送搜索查询,并返回一个经过 json_encode 编码的数组。我想在 jQuery 函数完成后使用生成的对象(理想情况下,将其推送到数组中,并像页面中其他任何地方的任何其他对象一样使用它。
但是,该对象在函数完成后不再存在。这是成功的:
var widgets = new Array();
$.getJSON('/server.php', {query: search.value}, function(response) {
widgets.push(response);
alert('value of result's attribute1 is ' + widgets[widgets.length].attribute1);
});
但是,一旦我离开该函数,widgets.push[length] 就会变为 null,并且我无法访问有关推送对象的任何内容。我认为这将是副本而不是参考?
我的应用程序涉及用户执行其中几个搜索以创建小部件列表,然后在每个对象的属性之间工作。在函数完成后,是否有一种公认的方法可以使这些数据持久化?
【问题讨论】:
-
widgets的范围是什么?是吗(以及您在另一个函数中对getJSON的调用?尝试将var放在widgets = new Array()前面;这将确保您正在创建一个全局变量(只要widgets未在外部范围)。 -
对不起,应该解释一下 - 小部件是全局的,
-
好的,那么你以后从哪里尝试访问
widgets? -
访问发生在创建第二个小部件之后......随着更多小部件被推送到阵列上,依此类推。如果将 widgets.push 放在 .getJSON 的成功回调中,你同意吗?
标签: jquery json persistence getjson