|
|
|
Непонятки с AJAX
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть такая функция, она добавляет значение в базу данных и возращает последний добавленный ID. Все добавляется нормально. Проблема в том, что когда ставишь alert(r); в переменой "а" есть число, а когда alert(r); убираешь, то в переменной "а" пустая строка. Почему так происходит? function ExecAjax(par,pagename){ var r="",a; xmlHttp = getXmlHttp(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4) { r=parseInt(xmlHttp.responseText); } } var params = par; xmlHttp.open("POST", pagename, true) xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xmlHttp.send(params); alert(r); a=r; alert(a); return a; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 12:09:24 |
|
||
|
Непонятки с AJAX
|
|||
|---|---|---|---|
|
#18+
Kokon, AJAX - штука асинхронная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 12:13:15 |
|
||
|
Непонятки с AJAX
|
|||
|---|---|---|---|
|
#18+
Kokon, onreadystatechange вызывается не прямо в вашей ExecAjax, а через некоторое время после ее завершения, и как бы "сама по себе". Потому ExecAjax не может получить результат (его просто нет). Все действия по использованию полученного результата должны быть внутри функции, передаваемой в onreadystatechange. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 12:21:33 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=36472142&tid=1453531]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
187ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 481ms |

| 0 / 0 |
