не работает ajax запрос
Здравствуйте. У меня ошибка в коде:
$(".click_button").click(function() { $.ajax({ url: "log.php?name=" + document.getElementById('input_text').value, beforeSend: function(){ document.getElementById('image').src='Loader.gif'; }, success: function(answ){ $('.some_class').empty(); $('.some_class').append(answ); } }); }); Конкретно: при шелчке на кнопку click_button код посылает запрос используя введеные данные (input_text), а перед отправкой меняет картинку. При успехе удаляет все из div'а some_class и вставляет в него новые данные. Но у меня этот скрипт работает только первый раз, При втором клике ничего не происходит. Не подскажете как сделать обработку всех нажатий? |
1) при втором клике ошибки какие-то в консоль выдаются?
2) зачем изменение картинки запихнуто в beforeSend? Почему бы его перед $.ajax не поставить? |
Подобная ситуация
Здравствуйте, у меня такая же ситуация как у ТС.
вот код функции: function DeleteFromCompare(GoodId,SessionId) { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } if (req) { var cart = document.getElementById('GoodsInCompare'); var cart_box = document.getElementById('COMPARE'); var status = document.getElementById('addcart_status'); var params = 'good=' + GoodId + '&session=' + SessionId + '&action=delete'; var url = "/modules/compare/m_box_compare.php"; req.onreadystatechange = function() { if (req.readyState == 4) { status.innerHTML = ''; if(req.status == 200) { cart_box.style.display="block"; cart.innerHTML = req.responseText; } } } } req.open("POST", url, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.setRequestHeader('Content-length', params.length); req.send(params); } Подскажите почему так получается и как это исправить? |
видимо, кэширование
http://xmlhttprequest.ru/#problem |
Сделал так (строка 29):
function DeleteFromCompare(GoodId,SessionId) { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } if (req) { var cart = document.getElementById('GoodsInCompare'); var cart_box = document.getElementById('COMPARE'); var status = document.getElementById('addcart_status'); var params = 'good=' + GoodId + '&session=' + SessionId + '&action=delete'; var url = "/modules/compare/m_box_compare.php"; req.onreadystatechange = function() { if (req.readyState == 4) { status.innerHTML = ''; if(req.status == 200) { cart_box.style.display="block"; cart.innerHTML = req.responseText; } } } } req.open("POST", url, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.setRequestHeader('Content-length', params.length); req.setRequestHeader ( "Cache-Control", "No-Cache"); req.send(params); } все равно не помогло. как еще можно попробовать? если можно применительно к моему случаю. что то я никак не разберусь с аяксом:( |
молодец, отправил серверный заголовок с клиента, пойди возьми печеньку. Может будем думать, перед тем как что-то делать? Что значит применительно к твоему случаю? Взять твой код и исправить, чтобы он заработал?
какие заголовки отправляет браузер и сервер в первый и во второй раз (если во второй раз что-то отправляется)? В каком браузере? Версия? |
Если не сложно подскажи как посмотреть заголовки? браузеры опера 10 и ИЕ 8. я первый раз столкнулся с подобной проблемой потому как только начал изучать аякс. помоги плиз.
|
С заголовками разобрался. тут вот какая ситуация.
После первой отработки скрипта аякс, просматриваю хтмл код и там нет фрагмента кода который должен отработать второй раз. т.е. т.е. изначально код хтмл: <table border="0" cellspacing="0" cellpadding="0" class="box" id="COMPARE"> <tr> <td class="box_head">Сравнение</td> </tr> <tr> <td class="box_body"> <div id="GoodsInCompare"><div class="MCart_good">Товар 1 <a title="Удалить" class="delete" onclick="DeleteFromCompare(1076,'6d9f147b665cd2d87a8797c745c54a70')">×</a></div><div class="MCart_good">Товар 2 <a title="Удалить" class="delete" onclick="DeleteFromCompare(1068,'6d9f147b665cd2d87a8797c745c54a70')">×</a></div></div> <input type="button" value="Сравнить" class="MCompare_btn_compare" onclick="location.href='/compare/'" /> </td> </tr> </table> после первой отработки код просматриваю, он тот же самый. почему он не обновился? и должен ли был? |
Все, разобрался. Ошибка была в пхп коде. В любом случае спасибо за помощь:)
|
#GoodsInCompare должен был обновиться, #COMPARE появиться. По поводу заголовков, поставь fiddler
на страничке что-то меняется? как ты просмотриваешь код? Страница/Просмотр HTML-кода? Там ничего меняться не должно, это код, пришедший с сервера. Поставь ff+firebug, в firebug можно будет смотреть текущий код UPD: опоздал |
Часовой пояс GMT +3, время: 01:38. |