обновить переменную javascript с помощью ajax в режиме реального времени

У меня есть функция javascript, которая должна выполнять числовой расчет. Некоторые из чисел, используемых в этом расчете, хранятся в базе данных, и они будут различаться в зависимости от того, как пользователь заполняет онлайн-форму. Как только пользователь заполнит форму, он нажмет кнопку РАСЧЕТ. В настоящее время в функции JS я хотел бы использовать ajax для получения значений из базы данных, которые соответствуют некоторому другому значению, выбранному пользователем.

Простой пример: есть 3 размера футболок с разными ценами в зависимости от размера (хранится в базе данных). Пользователь выбирает размер, и когда он нажимает «РАССЧИТАТЬ», я использую ajax, чтобы получить цену, связанную с выбранным размером.

Вопрос в том, что я хочу использовать ajax для обновления некоторых переменных, которые я буду использовать позже в скрипте.То, как я пытаюсь это сделать сейчас, не работает, переменная в скрипте не обновляется из ajax, я могу получить доступ только к значению из базы данных внутри функции successвызова ajax . Я понимаю, что это связано с тем, что ajax по своей природе асинхронен, и требуется некоторое время, ожидая возврата данных с сервера, в то время как функция все еще продолжает работать.

В следующем примере вызов ajax возвращает данные JSON, и у меня есть функция с именем isjson(), которая проверяет, действительно ли возвращаемая строка является данными JSON.

Пример кода:

function calculate_cost(){

    var price = 0;
    var size = $('form#tshirt_form [name="size"] option:selected').val();
    $.ajax({
        url:'my_script.php',
        type:'post',
        data:'select=price&table=tshirts.prices&where=size = "' + size + '"',
        success:function(data){
            if(isjson(data)){
                data = $.parseJSON(data);
                data = data[0];
                price = data['price'];
            }else{
                //display error getting data
            }
        }
    });
    //  continue code for calculation
    //  this alert will display "0", but I want the price from the database in there
    alert(price);
    //perhaps do other ajax calls for other bits of data
    //...
    return final_price;
}

Кто-нибудь знает, как это сделать, обновляя переменные с помощью ajax в реальном времени??

Большое спасибо!

** РЕДАКТИРОВАТЬ **

Спасибо всем за помощь, я понимаю, что ajax является асинхронным. Мне бы очень хотелось получить ответ, в котором мне не нужно продолжать вычисления внутри функции success, потому что моя реальная проблема включает в себя множество значений из нескольких разных таблиц. Я также хотел бы иметь возможность расширить расчет в будущем, не становясь слишком запутанным. Если это невозможно, то мне придется с этим жить. ;-)

** EDIT 2 **

Хорошо, мы получили ответ: конечно, он находится прямо в верхней части страницы документации, :-/ извините за это. Свойство asyncв ajax-вызове jQuery. http://api.jquery.com/jQuery.ajax/

7
задан jeffery_the_wind 2 April 2012 в 15:00
поделиться