Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.04.2009, 13:10
Новичок на форуме
Отправить личное сообщение для ЯРОСЛАВ Посмотреть профиль Найти все сообщения от ЯРОСЛАВ
 
Регистрация: 04.04.2009
Сообщений: 1

не работает 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 и вставляет в него новые данные.
Но у меня этот скрипт работает только первый раз, При втором клике ничего не происходит. Не подскажете как сделать обработку всех нажатий?
Ответить с цитированием
  #2 (permalink)  
Старый 05.04.2009, 04:07
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

1) при втором клике ошибки какие-то в консоль выдаются?
2) зачем изменение картинки запихнуто в beforeSend? Почему бы его перед $.ajax не поставить?
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2010, 16:20
Новичок на форуме
Отправить личное сообщение для Spenser Посмотреть профиль Найти все сообщения от Spenser
 
Регистрация: 07.04.2010
Сообщений: 5

Подобная ситуация
Здравствуйте, у меня такая же ситуация как у ТС.

вот код функции:
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);
}


Подскажите почему так получается и как это исправить?
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2010, 16:40
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

видимо, кэширование
http://xmlhttprequest.ru/#problem
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2010, 17:01
Новичок на форуме
Отправить личное сообщение для Spenser Посмотреть профиль Найти все сообщения от Spenser
 
Регистрация: 07.04.2010
Сообщений: 5

Сделал так (строка 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);
}

все равно не помогло. как еще можно попробовать? если можно применительно к моему случаю. что то я никак не разберусь с аяксом
Ответить с цитированием
  #6 (permalink)  
Старый 07.04.2010, 20:07
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

молодец, отправил серверный заголовок с клиента, пойди возьми печеньку. Может будем думать, перед тем как что-то делать? Что значит применительно к твоему случаю? Взять твой код и исправить, чтобы он заработал?

какие заголовки отправляет браузер и сервер в первый и во второй раз (если во второй раз что-то отправляется)? В каком браузере? Версия?
Ответить с цитированием
  #7 (permalink)  
Старый 07.04.2010, 21:09
Новичок на форуме
Отправить личное сообщение для Spenser Посмотреть профиль Найти все сообщения от Spenser
 
Регистрация: 07.04.2010
Сообщений: 5

Если не сложно подскажи как посмотреть заголовки? браузеры опера 10 и ИЕ 8. я первый раз столкнулся с подобной проблемой потому как только начал изучать аякс. помоги плиз.

Последний раз редактировалось Spenser, 07.04.2010 в 21:11.
Ответить с цитированием
  #8 (permalink)  
Старый 07.04.2010, 22:05
Новичок на форуме
Отправить личное сообщение для Spenser Посмотреть профиль Найти все сообщения от Spenser
 
Регистрация: 07.04.2010
Сообщений: 5

С заголовками разобрался. тут вот какая ситуация.
После первой отработки скрипта аякс, просматриваю хтмл код и там нет фрагмента кода который должен отработать второй раз. т.е.
т.е. изначально код хтмл:
<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')">&times;</a></div><div class="MCart_good">Товар 2
                        <a title="Удалить" class="delete" onclick="DeleteFromCompare(1068,'6d9f147b665cd2d87a8797c745c54a70')">&times;</a></div></div>
	<input type="button" value="Сравнить" class="MCompare_btn_compare" onclick="location.href='/compare/'" />
	</td>
</tr>
</table>

после первой отработки код просматриваю, он тот же самый. почему он не обновился? и должен ли был?
Ответить с цитированием
  #9 (permalink)  
Старый 07.04.2010, 22:24
Новичок на форуме
Отправить личное сообщение для Spenser Посмотреть профиль Найти все сообщения от Spenser
 
Регистрация: 07.04.2010
Сообщений: 5

Все, разобрался. Ошибка была в пхп коде. В любом случае спасибо за помощь
Ответить с цитированием
  #10 (permalink)  
Старый 07.04.2010, 22:31
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

#GoodsInCompare должен был обновиться, #COMPARE появиться. По поводу заголовков, поставь fiddler

на страничке что-то меняется?
как ты просмотриваешь код? Страница/Просмотр HTML-кода? Там ничего меняться не должно, это код, пришедший с сервера. Поставь ff+firebug, в firebug можно будет смотреть текущий код

UPD: опоздал
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает пример использования AJAX nuker AJAX и COMET 4 19.03.2009 18:31
Синхронный запрос данных по AJAX Shasoft AJAX и COMET 2 03.03.2009 14:07
Проблема с обработкой селектов html кода, пришедшего через ajax запрос Rage jQuery 6 26.01.2009 14:15
ajax запрос с подгружемным js HelpeR AJAX и COMET 1 27.10.2008 12:44
Prototype + Ajax - не работает в IE, FF. silvek Prototype & script.aculo.us 0 30.08.2008 16:06