Цитата:
function createInstance() {
var req = null;
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("XHR not created");
}
}
}
return req;
}
function submitForm(callback) {
var req = createInstance();
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == 200) {
var but = req.responseText;
callback(but);
} else {
alert("Error: returned status code " + req.status + " " + req.statusText);
}
}
};
req.open("GET", "op21.php", true);
req.send(null);
}
submitForm(callback);
function callback(myVar) {
console.log(myVar);
}
|
Спасибо. Я видел это единственное решение, когда искал информацию по вопросу. А так получается, что все операции с myVar можно проводить только внутри function callback. По сути, точно также я мог быть продолжать проводить операции с переменной but внутри функции submitForm продолжая блок после if (req.status == 200)
Мне нужен результат выполнения функции submitForm использовать в других местах страницы в ряде других функций, собственно говоря поэтому я и хотел поместить результат в новую переменную, чтобы потом с ней работать. |
Ну раз ты это понял, то теперь можно и открыть тебе грязную сторону javascript, о которой не принято говорить.
Если ты сделаешь так:
req.open("GET", "op21.php", false);
то запрос будет синхронным и страница намертво зависнет до тех пор пока не загрузится ответ от сервера, после чего продолжит выполнение кода. Таким образом можно быть уверенным, что данные в переменной будут на месте.Помни: в приличном обществе за такой подход плюют в лицо. |
| Часовой пояс GMT +3, время: 09:18. |