Бывают такие задачи: нужно получить значение переменной из 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-формат для отдачи данных клиенту, то все можно сделать еще проше.
В данном скрипте я опустил проверки значений, их Вам лучше сделать самостоятельно под Ваши нужды, главное суть.
Спаисбо, никак не могла получить переменные для vizualization googl, чтобы в данном api построить диаграммку на основе данных с моего сервера, проблема в доступе к данным, подгружаемым ajax. Теперь всё.
Всегда пожалуйста Юлия 🙂
Спасибо Вашему чудо сайту. Хоть и наткнулся случайно, но это решило многочасовую проблему. Может объясните или ссылочку дадите почему в рамках success не работает var value = data.response;? Я несколько часов пытался безуспешно передать из ajax-а значение таким образом.
второй день парюсь перебирая примеры, думал готовый, один хрен не работает как был undifined так и остался:(
Наткнулся с $.ajax на такую проблему: в скрипте после нажатия на определенную кнопочку, отправляется методом post запрос data: «mode=replace&table=»+table+»&element1=»+id1.substr(0, len2)+»&element2=»+prefi, И проблема в том, что в первый раз данные отправляются верные, последующие же данные в переменных изменяются, проверял через console.log, но в запросе они не изменяются. В чем может быть дело и как с это исправить?
Последний пример — рабочий вариант:
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;
}
Долго искал как загнать в переменную результат запроса. У всех в лог консоли выводят или в алерт или в какой нибудь тег. А как «на хлеб намазать» все умалчивают. Спасибо!
function set_buildins(value)
{
response = $.ajax({
type: ‘POST’,
url: ‘update_user.php’,
async: false,
data: {area:user_area},
dataType: ‘json’,
}).responseText;
value=response;
return value;
}
var get_buildings=set_buildins();
//функция $.parseJSON() даёт ошибку, без неё код работает, а вот почему для мене темный лес.