Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Без АЛЕРТА переменную не видать... (https://javascript.ru/forum/dom-window/50254-bez-alerta-peremennuyu-ne-vidat.html)

Veterinar 18.09.2014 21:44

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

есть картинка:
<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'});
 }
}

skrudjmakdak 18.09.2014 21:52

скорей всего ты делаешь запрос, ответ с сервера не успев придти выполняется ваш код
когда вы делайте алерт, то выполнение кода останавливается на этой точке и ответ успевает придти и получается, что переменная уже изменила свое значение.
после нажатия на "ок" в алерте, код разумеется показывает вам правильный ответ.

Veterinar 18.09.2014 21:55

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

Но скрипт, где обрабатывается запрос отрабатывает и заполняет диалоговую форму. Просто я не стал весь длинноватый скрипт сюда всовывать.

Veterinar 18.09.2014 21:58

Кстати, в алерете показывается неверное значение! :help:

skrudjmakdak 18.09.2014 22:03

сам аякс вроде как правильно оформлен, посмотри в отладчике, что тебе сервер отдает.
открой хром->F12->Network->Сделай аякс запрос
внизу добавится строчка с запросом, нажми на нее, справа появится окошко в нем будет: headers, preview, response, cookies, timing. открой response и скажи то тебе вернул сервер или нет?

Veterinar 18.09.2014 22:06

Дык, я ж полученные от сервера данные впихиваю в другой DIV и там все они есть!
То есть с сервера приходит все нормально.

skrudjmakdak 18.09.2014 22:24

так я не понял. ответ найден нет? еще при отладке можешь использовать точки останова, почитай тут. очень помогает находить ошибки:
http://learn.javascript.ru/debugging-chrome

Veterinar 18.09.2014 22:27

skrudjmakdak, увы, ответ не найден...
Есть "алерт" - всё работает. Нету - хрен-с-два!

skrudjmakdak 18.09.2014 22:34

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

Veterinar 18.09.2014 22:37

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


Часовой пояс GMT +3, время: 19:36.