Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2010, 18:39   #1
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
По умолчанию ajax+php не работают проверки if

Здравствуйте, подскажите пожалуйста как могло так произойти, что проверки if при использовании аякса у меня не работают.

Код выглядит примерно так
Код:
	function Buy(url,id){
		if (window.XMLHttpRequest)
			{// code for IE7+, Firefox, Chrome, Opera, Safari
				xmlhttp=new XMLHttpRequest();
			}
		else
			{// code for IE6, IE5
				xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
		xmlhttp.open("GET",url,false);
		xmlhttp.send(null);
			
		if (xmlhttp.responseText=='W')
		{
			document.getElementById(id).innerHTML='You have added this package to the cart';
			document.getElementById('items_total').innerHTML=parseInt(document.getElementById('items_total').innerHTML)+1;
			document.getElementById('items_1').innerHTML=parseInt(document.getElementById('items_1').innerHTML)+1;
}
}
</script>
текст, который приходит сюда xmlhttp.responseText - это 100% буква 'W', проверял вот таким способом
Код:
document.getElementById(id).innerHTML=xmlhttp.responseText
то есть текст вроде бы и приходит правильный, но проверка просто не выполняется, подскажите пожалуйста, что тут не так.
Tirendus вне форума Ответить с цитированием
Старый 22.03.2010, 10:37   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Попробуйте так:
Код:
function Buy(url,id){
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET",url,false);
    xmlhttp.send(null);

    alert ('data="' + xmlhttp.responseText + '"');
    if (xmlhttp.responseText =='W') {
        document.getElementById(id).innerHTML='You have added this package to the cart';
        document.getElementById('items_total').innerHTML=parseInt(document.getElementById('items_total').innerHTML)+1;
        document.getElementById('items_1').innerHTML=parseInt(document.getElementById('items_1').innerHTML)+1;
    }
}
SkyM@n вне форума Ответить с цитированием
Старый 22.03.2010, 14:45   #3
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
По умолчанию

Спасибо, пробовал

xmlhttp.responseText приходит пустым, хотя если я вписываю такую строку
Код:
document.getElementById(id).innerHTML=xmlhttp.responseText
без проверок, то ответ приходит - W
Мистика..
Tirendus вне форума Ответить с цитированием
Старый 22.03.2010, 14:48   #4
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Цитата:
Сообщение от Tirendus Посмотреть сообщение
без проверок, то ответ приходит - W
Firebug сказал? Откуда знаете?
SkyM@n вне форума Ответить с цитированием
Старый 22.03.2010, 15:01   #5
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
По умолчанию

Я убираю эту проверку

Код:
if (xmlhttp.responseText =='W')
оставляю эти три действия
Код:
document.getElementById(id).innerHTML='You have added this package to the cart';
        document.getElementById('items_total').innerHTML=parseInt(document.getElementById('items_total').innerHTML)+1;
        document.getElementById('items_1').innerHTML=parseInt(document.getElementById('items_1').innerHTML)+1;
Но в первом меняю текст с You have added this package to the cart на xmlhttp.responseText и текст в этом месте становится буквой W
Tirendus вне форума Ответить с цитированием
Старый 22.03.2010, 15:03   #6
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Попробуйте в начале функции поставить
Код:
var xmlhttp;
SkyM@n вне форума Ответить с цитированием
Старый 22.03.2010, 15:07   #7
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
По умолчанию

пробовал, не помогает =\
Tirendus вне форума Ответить с цитированием
Старый 22.03.2010, 15:35   #8
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Код:
function Buy(url,id){
    var xmlhttp = null;
    if (window.XMLHttpRequest) {
       try {
          xmlhttp = new XMLHttpRequest();
       } catch (e){}
    } else if (window.ActiveXObject) {
       try {
          xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
       } catch (e){
          try {
             xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
          } catch (e){}
       }
   }

   if(xmlhttp){
        xmlhttp.open("GET", url, true);
        xmlhttp.onreadystatechange = function(){
            if (xmlhttp.readyState == 4) {
               if (xmlhttp.status == 200) {
                  alert ('data="' + xmlhttp.responseText + '"');
                  if (xmlhttp.responseText =='W') {
                      document.getElementById(id).innerHTML='You have added this package to the cart';
                      document.getElementById('items_total').innerHTML=parseInt(document.getElementById('items_total').innerHTML)+1;
                      document.getElementById('items_1').innerHTML=parseInt(document.getElementById('items_1').innerHTML)+1;       
               } else {
                  alert("Не удалось получить данные:\n" +
                  xmlhttp.statusText);
               }
             }
        };
        xmlhttp.send(null);
   }
}
Давно таким занимался. Ибо юзаю jQuery, чего и Вам советую.
SkyM@n вне форума Ответить с цитированием
Старый 22.03.2010, 16:37   #9
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
По умолчанию

Спасибо, но всё равно не помогло) функция Buy привязана к нажатию на кнопку, при нажатии меня просто перекидывает на другую страницу и в строке ввода указываются координаты x y, на которых я нажал на кнопку.
Tirendus вне форума Ответить с цитированием
Старый 22.03.2010, 17:48   #10
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

В париведенном Вами коде нету обработчиков нажатий на кнопку. Поэтому ничего больше Вам сказать, к сожалению, не могу.
SkyM@n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cеансы в PHP,не работают скрипты Princesse Помощь студентам 0 20.12.2009 00:24
система проверки знаний (php) andrey4623 PHP 3 11.04.2009 08:46