Ваша функция возвращается даже до завершения вызова ajax, поскольку она асинхронная.Оператор return в вашем «onreadystatechange» не будет иметь никакого эффекта, потому что значение возвращается вызывающей стороне метода «onreadystatechange», который является объектом XMLHttpRequest, а не вашим кодом.
Вы должны передать функцию обратного вызова на ajax_edit_form_save
, которая вызывается, когда readystate равен 4
См. Ниже:
function ajax_edit_form_save(id, property, new_value, funCallback) // ==> callback function
{
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
// screw IE5 & IE6
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.responseText != '')
{
callback( xmlhttp.responseText ); // =============> callback function called
}
}
// myURL is already defined. I'm not troubleshooting this part, I know it's working
xmlhttp.open("GET", myURL, true);
xmlhttp.send();
}
Функция обратного вызова может быть:
function handleReponse(resp) {
// do something with resp
}
ajax_edit_form_save("myID", "myProperty", "new value", handleResponse);