Post запрос в ajax, работает только 1 раз в ie6. как решить?

ilya20000

Новичок
Post запрос в ajax, работает только 1 раз в ie6. как решить?

Что сделать чтобы это и в IE 6 заработало?
Ситуация такая, в опере нажимаю кнопку вызываю функцию contacts() нармально, несколько раз всегда работает. в IE 6 работает только если нажать 1 раз, второй раз ничего не происходит. и никаких сообщений типа ошибка скрипта. только выводит document.getElementById('addressbook').innerHTML = "<img src=tema1/images/69.gif>"
такое ощущение какбудто он не уходит на функцию contacts1()....

PHP:
function createObject() {
var request_type;
var browser = navigator.appName;

if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
}else{
request_type = new XMLHttpRequest();
}
return request_type;
}
var http = createObject();
var nocache = 0;



function contacts(page) {
document.getElementById('addressbook').innerHTML = "<img src=tema1/images/69.gif>"
 
var page = encodeURI(page);
nocache = "+new Date().getTime()+";

parameters='p='+page+'&part=1&nocache='+new Date().getTime();

http.onreadystatechange = contacts1; 

http.open('POST','mods/addressbook.php', true);

http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", parameters.length);
http.setRequestHeader("Connection", "close");
http.send(parameters);	  

}
function contacts1() {
if(http.readyState == 4){
var response = http.responseText;
   if(!response == 0){
					 
					 document.getElementById('addressbook').innerHTML = response;
					 /*alert("Сообщения Удалены!");
					 document.location="index.php?mod=mail&dir=4";*/
					 
			        }
               else {
					 alert(response);
					}
}
 }
:confused: :confused:
как исправить?
 

IIIEPJIOK

Новичок
Повторное использование объекта XmlHttpRequest

В Internet Explorer, если open() вызван после установки onreadystatechange, может быть проблема с повторным использованием этого XmlHttpRequest.

Чтобы использовать заново XmlHttpRequest, сначала вызывайте метод open(), а затем - присваивайте onreadystatechange. Это нужно из-за того, что IE самостоятельно очищает объект XmlHttpRequest в методе open(), если его статус "completed".

Вызывать abort() для перенаправления запроса на другой URL не нужно, даже если текущий запрос еще не завершился.
Источник
 

dimagolov

Новичок
для начала могу предложить немного более правильную инициализацию xmlHttpObject. а ответ на вопрос "уходит или не уходит на функцию contacts1()" лежит в плоскости отладки, где тебе никто не поможет. вставь туда alert и смотри, что присходит.
PHP:
		xmlHttpObject = false;
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			xmlHttpObject = new XMLHttpRequest();
			if (xmlHttpObject.overrideMimeType) {
				xmlHttpObject.overrideMimeType('text/xml');
			}
		} else if (window.ActiveXObject) { // IE
			try {
				xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		if (!xmlHttpObject) {
			alert('Unable to establish communication');
			return false;
		}
 

ilya20000

Новичок
IIIEPJIOK
Спасибо, такой ньюанс, a столько нервов.... Теперь всё работает.

dimagolov
Спасибо. Применю его.
 
Сверху