Ваш код оповещения не определен, потому что вы ничего не возвращаете из вашей функции ajaxCall()
, как и вы, когда вы используете асинхронный серверный вызов. Ваша функция обратного вызова запускается после загрузки данных с сервера, задолго до того, как ваш alert()
запустился. Попробуйте предупредить внутри функцию обратного вызова следующим образом:
function ajaxCall(hash)
{
$.get("ajax.php", { id: hash },
function(data)
{
alert(parseInt(data.price));
}, "json");
}
Также важно отметить, что когда вы возвращаете parseInt(data.price))
, вы не попадаете в область действия ajaxCall
, поэтому он ничего не возвращает к вашему предупреждению. Есть способ отключить async
в вызовах сервера jQuery, но это не рекомендуется. Вместо этого, как я уже говорил выше, подумайте о том, чтобы поместить свою логику обработки данных в функцию обратного вызова.
Если у вас мертвый набор в том, что у вас есть универсальная функция AJAX (хотя, если честно, это то, что функции JQuery AJAX равны , и на самом деле нет никаких причин вообще чтобы сделать это), вы можете сделать что-то вроде этого:
$(document).ready(function() {
$("#quantity").change(function()
{
hash = $("#quantity").val(); //returns 0001 (ex)
qPrice_price = ajaxCall(hash, handleQuantityChange);
alert(qPrice_price);
});
});
function handleQuantityChange(data) {
alert(data);
}
function ajaxCall(hash, callback) {
$.get("ajax.php", { id: hash }, function(data) {
callback(parseInt(data.price));
}, "json");
}