Цитата:
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, время: 17:14. |