Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Присвоить переменной значение через POST

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Demest
Отправлено: 26 Февраля, 2015 - 10:06:43
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Здравствуйте, такая проблема: делаю запрос POST, результат которого помещаю в переменную, но переменная оказывается пустой, подскажите как это можно исправить?
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var onlyNum;
  3. $(function(){
  4.         $.post("data.php",{type:5},function(data){
  5.                 onlyNum = data;
  6.         });
  7.         alert(onlyNum); //Выводит undefined
  8. });
  9.  

(Отредактировано автором: 26 Февраля, 2015 - 10:07:05)

 
 Top
Мелкий Супермодератор
Отправлено: 26 Февраля, 2015 - 10:14:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Усвоить концепцию асинхронного запроса.
На момент вызова alert'а AJAX запрос скорей всего был ещё даже не отправлен, не говоря уж о получении результата.


-----
PostgreSQL DBA
 
 Top
Anguis
Отправлено: 26 Февраля, 2015 - 10:16:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




попробуйте для начала сделать так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var onlyNum;
  3. $(function(){
  4.         $.post("data.php",{type:5},function(data){
  5.  
  6.                 onlyNum = data;
  7.                 alert(onlyNum); //что выведет?
  8.  
  9.         });
  10. });
  11.  
 
 Top
RickMan
Отправлено: 26 Февраля, 2015 - 10:16:32
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




$.post - это асинхронный запрос. Следователтьно сначало выполнится alert а потом уже в переменную присвоится новое значение. Почитайте про асинхронность в jquery. А чтобы увилеть результат, добавьте alert сразу после присвоения в переменную onlyNum нового значения.
 
 Top
Demest
Отправлено: 26 Февраля, 2015 - 10:23:24
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Anguis пишет:
попробуйте для начала сделать так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var onlyNum;
  3. $(function(){
  4.         $.post("data.php",{type:5},function(data){
  5.  
  6.                 onlyNum = data;
  7.                 alert(onlyNum); //что выведет?
  8.  
  9.         });
  10. });
  11.  

Выводит нужное мне число.

RickMan пишет:
$.post - это асинхронный запрос. Следователтьно сначало выполнится alert а потом уже в переменную присвоится новое значение. Почитайте про асинхронность в jquery. А чтобы увилеть результат, добавьте alert сразу после присвоения в переменную onlyNum нового значения.

И никак нельзя сначала присвоить значение, а потом выполнить alert? Мне нужно использовать эту переменную вне этой функции!
 
 Top
Anguis
Отправлено: 26 Февраля, 2015 - 10:27:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




Demest, можно задать какой-нть setTimeout. Но корректная работа не грарантируется все равно.
А можно вызвать функцию которая будет дальше использовать эту переменную из функции присваивания
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function(data){
  3.                 onlyNum = data;
  4.                 somefunc(); // эта функция будет дальше работать с переменной
  5.         }
  6.  

(Отредактировано автором: 26 Февраля, 2015 - 10:28:31)

 
 Top
Demest
Отправлено: 26 Февраля, 2015 - 10:32:52
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Anguis пишет:
А можно вызвать функцию которая будет дальше использовать эту переменную из функции присваивания

Спасибо!
 
 Top
RickMan
Отправлено: 26 Февраля, 2015 - 10:34:36
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Demest пишет:

И никак нельзя сначала присвоить значение, а потом выполнить alert? Мне нужно использовать эту переменную вне этой функции!


Можно. Перепишите с $.post на $.ajax, и там есть параметр async, его поменяйте на false. Но это крайней не советуется, потиому что если запрос вдруг будет долгий, то в этот момент замораживается весь интерфейс. В общем, научитесь лучше правильно пользоваться асинхронынми запросами. Если вам нужна работа этой переменной, то внесите это работу в callback функция запроса (там где вам сказали выполнить alert), ну или вынесети в функкции и вызывайте ее с того же колбэка...
(Добавление)
http://api[dot]jquery[dot]com/jquery[dot]ajax/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB