我有一个javascript文件,我希望一遍又一遍地调用相同的getJSON调用。例如:
$(document).ready(function() {
$('#validate').click(function() {
var url;
url = 'http://myurl';
$.getJSON(url, function(data) {
if (data[0].response.status === 'ok') {
$('#validate_text').html("data validated");
} else {
$('#validate_text').html("data Not Valid");
}
});
});
});
这项工作我想将其重构为:
$(document).ready(function() {
$('#validate').click(function() {
var url;
url = 'http://myurl';
data = myjsonfunction(url);
if (data[0].response.status === 'ok') {
$('#validate_text').html("DLS / NTS Validated");
} else {
$('#validate_text').html("DLS / NTS Not Valid");
}
});
});
其中myjsonfunction(url)
是一个独立的函数,我可以传递URL并返回原始的getJSON数据。我已经看到了一些例子,你在getJSON块之外设置了一个已定义的变量,但我似乎无法使这些变量发挥作用。
答案 0 :(得分:0)
尝试使用.then()
,因为data
是异步的,如果可以在来自myjsonfunction(url)
的响应之前同步调用
$(document).ready(function() {
$('#validate').click(function() {
var url;
url = 'http://myurl';
data = myjsonfunction(url);
data.then(function(response) {
if (response[0].response.status === 'ok') {
$('#validate_text').html("DLS / NTS Validated");
} else {
$('#validate_text').html("DLS / NTS Not Valid");
}
}, function err(jqxhr, textStatus, errorThrown) {
console.log(erroThrown)
})
});
});