не работает 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, время: 10:08. |