我正在尝试从 onreadystatechange AJAX 调用中返回一个值...我找到了这个页面:stackoverflow 链接。虽然我已经让它工作了,但我意识到添加或删除 fn 函数没有任何区别。以下代码有效:
username_is_available();
function username_is_available() {
var username = document.getElementById('username').value;
get_data('username', username, function(returned_value) {
if (returned_value == 'true') {
document.getElementById('username_err').innerHTML = 'Taken';
} else {
document.getElementById('username_err').innerHTML = 'Available';
};
});
}
function get_data(data_type, data, fn) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
fn(xmlhttp.responseText);
}
};
xmlhttp.open("GET", "availability.php?" + data_type + "=" + data, true);
xmlhttp.send();
}
一切正常,但这不是我的目标,我想要一个函数 username_is_available() 如果用户名确实可用,则返回 true。相反,在这里我发生了一个动作(innerHTML 已更改)。如果我尝试在匿名函数中返回,我会得到相同的结果,就好像我直接从 onreadystatechange 内部返回它一样:var unsigned