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:
как исправить?
 
Повторное использование объекта XmlHttpRequest

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

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

Вызывать abort() для перенаправления запроса на другой URL не нужно, даже если текущий запрос еще не завершился.
Источник
 
для начала могу предложить немного более правильную инициализацию 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;
		}
 
IIIEPJIOK
Спасибо, такой ньюанс, a столько нервов.... Теперь всё работает.

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