Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.02.2013, 21:40
Новичок на форуме
Отправить личное сообщение для DNA77 Посмотреть профиль Найти все сообщения от DNA77
 
Регистрация: 27.02.2013
Сообщений: 6

Ajax не работает в Chrome
Всем доброго дня!
Столкнулся с проблемой создания объекта XMLHttpRequest для Chrome, Opera.
Сайт www.aquasilver.ru
Функция запускается при оформлении заказа, если выбран какой либо товар.

function Get(url)
{
if (window.ActiveXObject) {
               req = new ActiveXObject("Microsoft.XMLHTTP");
                  if (req) {
                   
            req.onreadystatechange = responseServer;
                    req.open("GET", url, false);
		    
req.send(null);
        }

else if (typeof XMLHttpRequest!='undefined') {

        req = new XMLHttpRequest();
        req.onreadystatechange = responseServer;
        req.open("GET", url, false);

        req.send(null);
       
    } 

    }}


Выдает ошибку, что и логично при обращении к свойству отсутствующего объекта. Не могу понять в чем проблема.
function WrToDoc()
 {
var str=req.responseText; 
Uncaught TypeError: Cannot read property 'responseText' of undefined


return str;
 }

Последний раз редактировалось DNA77, 27.02.2013 в 22:42.
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2013, 21:56
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

У Вас синхронный запрос что ли?
req.open("GET", url, false);
если асинхронный то последний параметр true
если синхронный то вроде бы без callback делается
-----------
названия функций не совпадают там responseServer
а сама функция WrToDoc
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2013, 22:37
Новичок на форуме
Отправить личное сообщение для DNA77 Посмотреть профиль Найти все сообщения от DNA77
 
Регистрация: 27.02.2013
Сообщений: 6

Запрос синхронный, но в IE он работает... при изменение req.open("GET", url, false); на "true" и в IE перестает работать.

Сама функция responseServer() выглядит следующим образом:
function responseServer() {
    if (req.readyState == 4) {
    var status = req.status;
    //alert('status-'+status);
    if (status == 200) {
    addSelect(y);
    } else if (status == 400) {
    alert('Query error');
    } else if (status == 500) {
    alert('2Внутреняя ошибка на сервере');
    } else if (status == 503) {
    var time = req.getResponseHeader('Retry-After')*1000;
    alert('Сервер перегружен. Запрос будет повторен через: '+time+' секунд');
    setTimeout(sendRequest(url,path),time);
    } else {
    alert('Server response error');
    };
    };
};


Функция WrToDoc() вызывается функцией:
function DataAdd()
{
var url;
url="scripts/magazz.php?id="+document.getElementById('idLine').value;

Get(url);


st=WrToDoc();

//alert(st);

document.all.ShwOrd.innerHTML=st;

alert("end DataAdd");
}

Последний раз редактировалось DNA77, 27.02.2013 в 22:41.
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2013, 22:46
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Вы попробуйте в responseServer вставьте
if (status == 200) {alert(req.responseText) 
....

посмотрите ответ приходит или нет
по моему у Вас неправильная последовательность вызовов
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2013, 22:56
Новичок на форуме
Отправить личное сообщение для DNA77 Посмотреть профиль Найти все сообщения от DNA77
 
Регистрация: 27.02.2013
Сообщений: 6

Поставил вначале функции при значении true не работает вообще, при значении false работает на IE, но alert не всплывает.
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2013, 23:05
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

alert(req.responseText)
поставьте на 20 строку-функции Get(url)

Последний раз редактировалось vadim5june, 27.02.2013 в 23:09.
Ответить с цитированием
  #7 (permalink)  
Старый 27.02.2013, 23:25
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от DNA77
document.all.ShwOrd
Это не будет работать в Firefox.
Ответить с цитированием
  #8 (permalink)  
Старый 03.03.2013, 22:38
Новичок на форуме
Отправить личное сообщение для DNA77 Посмотреть профиль Найти все сообщения от DNA77
 
Регистрация: 27.02.2013
Сообщений: 6

Нашел функцию, все работает, запрос отображается. Подскажите, как вытащить и вставить в другую функцию текст запроса. Хочу, чтобы через переменную он при помощи innerHTML отображался в <td id='ShwOrd'>
document.getElementById('ShwOrd').innerHTML=st;
function Get(url) {
	var httpRequest;

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
		if (httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType('text/xml');
			// See note below about this line
		}
	} 
	else if (window.ActiveXObject) { // IE
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {}
		}
	}

	if (!httpRequest) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
	httpRequest.open('GET', url, true);
	httpRequest.send('');
	
}


function alertContents(httpRequest) {
	
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			
			var st=httpRequest.responseText;
			
			alert ('st='+st);
			st=document.getElementById('ShwOrd').innerHTML;
		} else {
			alert('There was a problem with the request.');
		}
	}
}
Ответить с цитированием
  #9 (permalink)  
Старый 04.03.2013, 02:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от DNA77
st=document.getElementById('ShwOrd').innerHTML;
вское видал, но такое - впервые ))
DNA77, вы наверно араб, раз пишите справа налево )))
Ответить с цитированием
  #10 (permalink)  
Старый 04.03.2013, 09:02
Новичок на форуме
Отправить личное сообщение для DNA77 Посмотреть профиль Найти все сообщения от DNA77
 
Регистрация: 27.02.2013
Сообщений: 6

Сообщение от danik.js Посмотреть сообщение
вское видал, но такое - впервые ))
DNA77, вы наверно араб, раз пишите справа налево )))
Danik, рад, что тебя это развеселило. Так как мне текст запроса использовать в другой функции?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
??? Скрипт не работает в IE, FF и Opera, но работает в Chrome и Safari psiworm jQuery 1 28.01.2013 10:05
scrollTo не работает в Chrome daima Events/DOM/Window 3 23.01.2013 10:43
Не работает анимация при загрузки ajax ArtOs Общие вопросы Javascript 0 24.05.2012 17:52
Ajax и три <form> не работает. Как правильно сделать листание записей из базы данных? vlad275 AJAX и COMET 2 14.12.2009 14:04
При наборе адреса с www не работает AJAX (JQuery)! madmis AJAX и COMET 3 23.11.2009 19:03