Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.09.2014, 21:44
Профессор
Отправить личное сообщение для Veterinar Посмотреть профиль Найти все сообщения от Veterinar
 
Регистрация: 27.12.2013
Сообщений: 167

Без АЛЕРТА переменную не видать...
Получаю в запросе данные, которые могут быть пустые. Если запрос ничо не вернул, то картинку скрываю. Если вернул, то картинку хотелось бы показать... а оно, гадство, без алерта ничо не показывает...

есть картинка:
<img id="myReminder" src="images/Reminder.png" onclick="функция()"/>

Есть запрос, который, гад, работает:
function showReminder(){
var reminder_id;   // КУДА ТОЛЬКО ЭТУ ПЕРЕМЕННУЮ НЕ СОВАЛ....
$.post(
 "user_actions.php",
 {
  user_id: user_id,
  dataType: 'xml'
 },
 function(responseXML){
  $(responseXML).find("actions").each(function() {
	reminder_id=$(this).find('id').text();
  }
// alert('show_rem='+show_rem); // если есть АЛЕРТ ТО КАРТИНКА ПОКАЗЫВАЕТСЯ!!! 
 if(reminder_id>0){
   $('#myReminder').css({'display': ''});
 }else{
   $('#myReminder').css({'display': 'none'});
 }
}
Ответить с цитированием
  #2 (permalink)  
Старый 18.09.2014, 21:52
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

скорей всего ты делаешь запрос, ответ с сервера не успев придти выполняется ваш код
когда вы делайте алерт, то выполнение кода останавливается на этой точке и ответ успевает придти и получается, что переменная уже изменила свое значение.
после нажатия на "ок" в алерте, код разумеется показывает вам правильный ответ.
Ответить с цитированием
  #3 (permalink)  
Старый 18.09.2014, 21:55
Профессор
Отправить личное сообщение для Veterinar Посмотреть профиль Найти все сообщения от Veterinar
 
Регистрация: 27.12.2013
Сообщений: 167

skrudjmakdak,
да, вполне вероятно. Но, прошу тогда подсказать, как быть?

Но скрипт, где обрабатывается запрос отрабатывает и заполняет диалоговую форму. Просто я не стал весь длинноватый скрипт сюда всовывать.
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2014, 21:58
Профессор
Отправить личное сообщение для Veterinar Посмотреть профиль Найти все сообщения от Veterinar
 
Регистрация: 27.12.2013
Сообщений: 167

Кстати, в алерете показывается неверное значение!
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2014, 22:03
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

сам аякс вроде как правильно оформлен, посмотри в отладчике, что тебе сервер отдает.
открой хром->F12->Network->Сделай аякс запрос
внизу добавится строчка с запросом, нажми на нее, справа появится окошко в нем будет: headers, preview, response, cookies, timing. открой response и скажи то тебе вернул сервер или нет?
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2014, 22:06
Профессор
Отправить личное сообщение для Veterinar Посмотреть профиль Найти все сообщения от Veterinar
 
Регистрация: 27.12.2013
Сообщений: 167

Дык, я ж полученные от сервера данные впихиваю в другой DIV и там все они есть!
То есть с сервера приходит все нормально.
Ответить с цитированием
  #7 (permalink)  
Старый 18.09.2014, 22:24
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

так я не понял. ответ найден нет? еще при отладке можешь использовать точки останова, почитай тут. очень помогает находить ошибки:
http://learn.javascript.ru/debugging-chrome
Ответить с цитированием
  #8 (permalink)  
Старый 18.09.2014, 22:27
Профессор
Отправить личное сообщение для Veterinar Посмотреть профиль Найти все сообщения от Veterinar
 
Регистрация: 27.12.2013
Сообщений: 167

skrudjmakdak, увы, ответ не найден...
Есть "алерт" - всё работает. Нету - хрен-с-два!
Ответить с цитированием
  #9 (permalink)  
Старый 18.09.2014, 22:34
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

погоди, я что то не понял. у тебя кавычки вообще криво расставлены. либо ты код сюда правленный кинул или еще что то. вот смотри:
$(responseXML).find("actions").each(function() {
	reminder_id=$(this).find('id').text();
  }//вот это быть не может, здесь должна быть закрывающая скобка );
// alert('show_rem='+show_rem); // если есть АЛЕРТ ТО КАРТИНКА ПОКАЗЫВАЕТСЯ!!! 
 if(reminder_id>0){
Ответить с цитированием
  #10 (permalink)  
Старый 18.09.2014, 22:37
Профессор
Отправить личное сообщение для Veterinar Посмотреть профиль Найти все сообщения от Veterinar
 
Регистрация: 27.12.2013
Сообщений: 167

skrudjmakdak, да, вы правильно сказали - когда убирал ненужное из примера видимо скобку убрал.
Но на странице работает.
С алертом. Зараза
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить функцию при запуске увидеть ГЛОБАЛЬНУЮ переменную? возжаждавший Элементы интерфейса 8 23.02.2017 01:27
Книгу без воды, обычным языком, с нуля до конца сразу с примерами понятную xcislav Учебные материалы 8 22.07.2014 15:20
Как в фильтр выборки по атрибуту занести переменную? tanto39 jQuery 9 29.06.2014 01:53
Как передать переменную в другую функцию adder-vb jQuery 3 31.01.2013 14:29
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58