Клуб API Карт

Запаздывание при получении данных от скрипта

sherlock2009mac
6 февраля 2010, 23:18

Пробую по клику на карту сделать алерт с данными, полученными от скрипта php:

jQuery('#Div1').load('http://localhost:6448/2a.php?point=' + document.getElementById("Div2").innerHTML); // данные помещаются в Div1
alert(document.getElementById("Div1").innerHTML); // а здесь отображаются полученные данные


Проблема в том, что происходит некое запаздывание (хотя самие данные оказываются в div'е моментально), и показывается прошлое значение div'a, а настоящее - только после второго клика. В чем проблема?

6 комментариев
Подписаться на комментарии к посту
на сколько помню load - ассинхронная команда. И алерт вы запрашиваете сразу за инициализацией запроса, т.е. по машинному времени в диве все еще старый элемент, который и показывается.
После второго клика так же показывается прошлое значение а не только что загруженное, просто на этот раз "прошлое" равно тому что вы ожидаете.
http://api.jquery.com/load/
вам нужно что-то вроде этого:
jQuery('#Div1').load('http://localhost:6448/2a.php?point='+document.getElementById("Div2").innerHTML,false,function(a,b,c){ alert(a); // отображаются полученные данные }); // данные помещаются в Div1
Спасибо. Да, насчет асинхронности мне мысль пришла через некоторое время. А этот пример - в нем дальнейший код не будет выполняться, пока не загрузятся данные с сервера?
Если писать внутри функции - то после загрузки. Если добавлять в самый конец - будет выполняться сразу же после инициализации load()
А не могли бы вы посмотреть следующий пример (по клику должно загружать данные с php и помещать их в описание балуна):
(почему-то в первый раз работает, а если кликать еще раз, данные скрипта отображаются на странице, но placemark.description уже не меняется)

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml">

    Примеры. Простой вызов карты.
   
   
   
   
 

     



   
   
   
    http://localhost:6448/2a.php">
   


Проблема здесь:
jQuery('#Div1').load('http://localhost:6448/2a.php?point=' + document.getElementById("Div2").innerHTML, false, function(a, b, c) {
                    placemark.description = getElementById("Div1").innerHTML;
                                    });

Описание метки изменяется в переменной (проверяю алертом), но на карте остается тем же!