jQuery Ajax вернуть переменную в success

Бывают такие задачи: нужно получить значение переменной из ajax запроса.

Например у нас есть функция, из которой мы хотим получить какое-либо значение, а эта функция в свою очередь запрашивает его с сервера:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function getSomeValue()
{
    var value = 0;  //значение по умолчанию
умолчанию
 
    $.ajax({
        type: 'POST',
        url: 'script.php',
        async: false,
        data: {type:'request'},
        dataType: 'json',
        success: function(data)
        {
            value = data.response;
        }
    });
    return value;
}
console.l

Тут мы устанавливаем значение нужной нам переменной в функции success. Очень важно установить значение async в false, без него этот код не сработает, потому что по умолчанию это значение в true и это значит что ajax-запросы работают асинхронно, можете попробовать получить значение при async = true — у Вас это не получится.
Также каким-то странным кажется тот момент, когда внутри функции мы обращаемся к переменной, которая по логике к которой я привык не должна быть видна вне этой функции (с этим я буду разбираться), потому я предложу Вам другой способ, и сам воспользуюсь им же 🙂

Опять же, если рассуждать логически, нам нужно значение. Зачем нам устанавливать его в функции? Давайте возьмем его напрямую:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function getSomeValue()
{
    var value = 0;  //значение по умолчанию
умолчанию
 
    value = $.ajax({
        type: 'POST',
        url: 'script.php',
        async: false,
        data: {type:'request'},
        dataType: 'json',
    }).responseText;
    return value;
}
console.l

Данные у нас приходит в формате json, поэтому сначала нам необходимо их распарсить, вытащить нужно нам значение и вернуть его:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function getSomeValue()
{
    var value = 0;  //значение по умолчанию
умолчанию
 
    response = $.ajax({
        type: 'POST',
        url: 'script.php',
        async: false,
        data: {type:'request'},
        dataType: 'json',
    }).responseText;
    values = $.parseJSON(response);
    return values.response;
}
console.l

Распарсили json и вернули нужное нам. Если вернуть нужно только одно значение, и структура позволяет Вам использовать не json-формат для отдачи данных клиенту, то все можно сделать еще проше.
В данном скрипте я опустил проверки значений, их Вам лучше сделать самостоятельно под Ваши нужды, главное суть.

Комментарии:


  1. Юлия

    Спаисбо, никак не могла получить переменные для vizualization googl, чтобы в данном api построить диаграммку на основе данных с моего сервера, проблема в доступе к данным, подгружаемым ajax. Теперь всё.

  2. admin

    Всегда пожалуйста Юлия 🙂

  3. Alexey

    Спасибо Вашему чудо сайту. Хоть и наткнулся случайно, но это решило многочасовую проблему. Может объясните или ссылочку дадите почему в рамках success не работает var value = data.response;? Я несколько часов пытался безуспешно передать из ajax-а значение таким образом.

  4. Илья

    второй день парюсь перебирая примеры, думал готовый, один хрен не работает как был undifined так и остался:(

  5. Олег

    Наткнулся с $.ajax на такую проблему: в скрипте после нажатия на определенную кнопочку, отправляется методом post запрос data: «mode=replace&table=»+table+»&element1=»+id1.substr(0, len2)+»&element2=»+prefi, И проблема в том, что в первый раз данные отправляются верные, последующие же данные в переменных изменяются, проверял через console.log, но в запросе они не изменяются. В чем может быть дело и как с это исправить?

  6. php_proger

    Последний пример — рабочий вариант:

    function getSomeValue()
    {
    var value = 0; //значение по умолчанию

    response = $.ajax({
    type: ‘POST’,
    url: ‘script.php’,
    async: false,
    data: {type:’request’},
    dataType: ‘json’,
    }).responseText;
    value = $.parseJSON(response);
    return value;
    }




YouTube бесплатно навести проклятие порчу