jQuery的:更新全局变量并重新运行功能
我有了另一个函数嵌套函数结合click事件重新运行与不同的AJAX URL功能:jQuery的:更新全局变量并重新运行功能
function getInternal() {
var callUrl = 'https://url.com'; // URL ON LOAD
$.ajax({
dataType: "json",
url: callUrl,
success: function(data) {
var obj = data;
$(document).ready(function(callUrl) {
$("a.dept").click(function() {
var filterDept = $(this).attr('id');
callUrl = 'https://url.com/' + filterDept; // URL TO UPDATE
getInternal(callUrl); // RUN THIS FUNCTION AGAIN
});
});
不幸的是,点击事件继续返回相同的数据。它看起来不像callUrl正在更新。
如何更新函数内的全局变量以重新运行?
函数的第一行将变量设置为特定值:var callUrl = 'https://url.com';
因此,每次运行此函数时,该变量都将设置为'https://url.com'
。
通过在函数外部移动变量,它将成为全局变量,并且更新callUrl的代码部分将会持续。
这就是说,你的代码是各种各样的混合起来。您有一个AJAX回调中的$(document).ready()
,每次调用都会重新定义一个click
事件,似乎没有任何事件会被关闭,并且您为getInternal();
提供了一个参数,尽管事实上它没有。
是这样的,你在追求什么?
$(document).ready(function() {
//On click of link, run AJAX call to changing URL (based on clicked link's ID)
$("a.dept").click(function() {
var filterDept = $(this).attr('id');
var callUrl = 'https://url.com/' + filterDept;
getInternal(callUrl);
});
});
function getInternal(callUrl) {
$.ajax({
dataType: "json",
url: callUrl,
success: function(data) {
alert("Call made to " + callUrl);
}
});
}
我在ajax成功中嵌套它的原因是onclick需要在ajax调用之后拾取元素。 – beaconhill
对不起,我还没有理解。在每种成功的AJAX回调中声明一个click事件在任何情况下都不太实际。你能解释一下你的目标是什么以及它与我的代码有什么不同? – Santi
由于DOM尚未加载,因此它在回调之外时不起作用。我需要.ready()在Ajax调用之后。 – beaconhill
每次通话时间'getInternal()',你重新设置变量原。在函数外部声明变量。 – sideroxylon