Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2015, 10:36   #1
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию jquery спарсить ответ

Код:
function getNews(){
		$.ajax({
		url:"/view/news.php",
		type:"POST",
		success:function(result){
			console.log(result);
		}
	});
	return news;
}
Функция возвращает пустой результат. Нужно что бы возвращала то, что отдает пхп скрипт.

Последний раз редактировалось zaki; 25.06.2015 в 12:00.
zaki вне форума Ответить с цитированием
Старый 25.06.2015, 11:37   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

В консоли что, не выводится что ли значение `result` ?
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 25.06.2015, 11:40   #3
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

1. Функция завершится до того, как придет ответ от сервера.
2. А news ваще нигде не создается.
3. Зачем постом отправлять пустоту?

Это все работает не так. Кури учебники.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 25.06.2015, 12:02   #4
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
1. Функция завершится до того, как придет ответ от сервера.
2. А news ваще нигде не создается.
3. Зачем постом отправлять пустоту?

Это все работает не так. Кури учебники.
Код:
function getNews(){
		$.ajax({
		url:"/view/news.php",
		success:function(result){
			var news = result;
		}
	});
	return news;
}
Что то я поковырялся, не понял.
Не поможете?
zaki вне форума Ответить с цитированием
Старый 25.06.2015, 12:39   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Потому что ajax (как следует из названия) асинхронный.

После вызова этой функции (ajax) код выполняется дальше, а не ждет пока завершится запрос. А когда-нибудь когда запрос таки завершится будут вызваны указанные callback'и (success и т.п.)

Поэтому у вас не получится так реализовать ваше getNews, в строке с return еще нет никаких news.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.06.2015, 13:05   #6
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
в строке с return еще нет никаких news.
Да и не будет, news умрет в замыкании колбэка, в самом гете он навсегда останется андефайнетом.

* я имею ввиду, что в принципе можно было бы запилить такой хак:
Код:
function getNews(){
        var news = {
                result: null
        };
		$.ajax({
		url:"/view/news.php",
		success:function(result){
			news.result = result;
		}
	});
	return news;
}
такое, конечно, и вернет ньюс с пустым результатом, но когда придет ответ таки заполнит его.
** код, конечно, говно: следует писать правильную асинхронную логику. С моей точки зрения подход, описанный выше, подходит для сложных объектов, типа товаров, которые на момент создания еще не знают все свои данные и должны подсасывать их с сервера.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 25.06.2015, 18:00   #7
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
Да и не будет, news умрет в замыкании колбэка, в самом гете он навсегда останется андефайнетом.

* я имею ввиду, что в принципе можно было бы запилить такой хак:
Код:
function getNews(){
        var news = {
                result: null
        };
		$.ajax({
		url:"/view/news.php",
		success:function(result){
			news.result = result;
		}
	});
	return news;
}
такое, конечно, и вернет ньюс с пустым результатом, но когда придет ответ таки заполнит его.
** код, конечно, говно: следует писать правильную асинхронную логику. С моей точки зрения подход, описанный выше, подходит для сложных объектов, типа товаров, которые на момент создания еще не знают все свои данные и должны подсасывать их с сервера.
Может посоветуете что мне лучше подойдет?
zaki вне форума Ответить с цитированием
Старый 25.06.2015, 18:15   #8
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

Заюзал $.get
zaki вне форума Ответить с цитированием
Старый 26.06.2015, 09:15   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Это было странно...
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 26.06.2015, 13:41   #10
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Что это было, Пух? (с)
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как спарсить NIKOLAYY2 Общие вопросы Delphi 13 29.03.2015 16:06
Спарсить текст Pearl777 PHP 1 26.07.2014 13:58
Спарсить символы Cyrix Общие вопросы Delphi 5 21.06.2012 01:20
Спарсить ставку ЦБ vectord PHP 5 09.01.2012 12:26
Спарсить страницу!!! DKENT Работа с сетью в Delphi 10 07.02.2011 18:04