Я передаю функцию обратного вызова, как показано ниже, но я не могу вызвать эту функцию, когда onreadystatechange изменяет значение i.e. request.onreadystatechange = func. Я получаю правильный ответ от сервера, когда я вызываю запрос ajax, но этот метод func не вызван. Обратите внимание, что функ передается в виде строки, когда я называю getFromServer("http://localhost/ch02/checkName.php?username=sas","func")
присвоение функции обратного вызова переменной
function createRequest() {
try {
request = new XMLHttpRequest();
}
catch (failed) {
request = null; }
finally {
return request;
}
}
function func(){
alert("ok");
}
function getFromServer(url,readystateCallback) {
request=createRequest();
if (request == null) {
alert("unable to create request");
} else {
request.open("GET", url, true);
var func= new Function (readystateCallback);
request.onreadystatechange = func;
request.send(null);
}
return request;
}
Я не хочу использовать круглые скобки здесь с readystateCallback. Он должен выполняться только тогда, когда запрос изменяет свое состояние. –
мой плохой, то будет была ошибка, удалил комментарий ... Я имел в виду: 'request.onreadstatechange = readystateCallback' – JordanHendrix
Используйте анонимную функцию: ' request.onreadystatechange = функция() {// делать что-то здесь - вы можете поместить вызов функции здесь. } ' Что вы делаете в своем примере, это передать строку, а затем назначить обратный вызов на строковое значение, а не выполнять фактический вызов функции. – Korgrue