Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не работает AJAX. Что сделать, чтобы заработал? / 16 сообщений из 16, страница 1 из 1
10.08.2008, 12:38
    #35480114
Бурляев Вячеслав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Проблема в том, что есть скрипт с использованием AJAX.
Форма авторизации (выполнена с помощью JavaScript):
Код: plaintext
1.
2.
3.
4.
function UserForm(){
	var parTab = document.getElementById("parentTab"); 
	parTab.innerHTML="<form name='loginForm'><table class='body' align='center'><tr><td>Логин:</td><td><input type='text'  id='nameuser'><td>Пароль:</td><td><input type='password'  id='pass'></td></tr><tr><td></td><td><input type='submit' id='submit' value='Вход' onClick='login_func(\"submit\");return false;'></td></tr></table></form>";
}
И функция, выполняемая при нажатии на кнопку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
function login_func(var){
	var parTab = document.getElementById("parentTab");
	if(!getCookie('login') || getCookie('login')=='-'){
		if(var == 'submit'){
			var pass = document.getElementById('pass').value;
			var name = document.getElementById('nameuser').value;
			var subm = document.getElementById('submit').value;
			var cookieLog = 'login';
		}
	}
	ajaxRequest.query(
		'http://localhost/user_reg.php',
		{name: name,
		pass: pass},
		function(result, errors){
			if(result['er']!=null){
				alert(result['er']);
			}else if(result['data']!=null){
					setCookie('login',result['data'][ 4 ]+"|"+result['data'][ 3 ], 10 ,'/');
					setCookie('Name',result['data'][ 1 ], 10 ,'/');
					setCookie('img',result['data'][ 2 ], 10 ,'/');
					removeForm(result['data'][ 1 ],result['data'][ 2 ]);

				}else if( result['form'] != null ){
						setCookie('login','-', 1 ,'/');
						logForm();
					}
		},
		false
	);
}
ajaxRequest.query выполняется, но не так как надо. а именно: для выполнения функции, записанной в параметре необходимо, чтобы статус в ajaxRequest.ReadyState был равен 4 (метод req.onreadystatechange, который описывается в ajaxRequest.query).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ajaxRequest.query=function(url,_35,_36,_37){
var req=new this();
req.caching=!_37;
req.onreadystatechange=function(){
if(req.readyState== 4 ){
_36(req.responseJS,req.responseText);
} else {
}
};
req.open(null,url,true);
req.send(_35);
};
Но при выполнении этот стаус всегда равен 1. ReadyState устанавливатся в 4 в методе _dataReady
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
t._dataReady=function(_16,js){
with(this){
if(caching&&_ldObj){
ajaxRequest.CACHE[_ldObj.hash]=[_16,js];
}
responseText=responseXML=_16;
responseJS=js;
if(js!==null){
status= 200 ;
statusText="OK";
}else{
status= 500 ;
statusText="Internal Server Error";
}
_changeReadyState( 2 );
_changeReadyState( 3 );
_changeReadyState( 4 );
_cleanup();
}
};
которая вызывается в методе send (вызывается из метода ajaxRequest.query)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
t.send=function(_7){
if(!this.readyState){
return;
}
this._changeReadyState( 1 ,true);
this._ldObj=null;
var _8=[];
var _9=[];
if(!this._hash2query(_7,null,_8,_9)){
return;
}
var _a=null;
if(this.caching&&!_9.length){
_a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method;
var _b=ajaxRequest.CACHE[_a];
if(_b){
this._dataReady(_b[ 0 ],_b[ 1 ]);
return false;
}
}
var _c=(this.loader||"").toLowerCase();
if(_c&&!ajaxRequest.LOADERS[_c]){
return this._error("unk_loader",_c);
}
var _d=[];
var _e=ajaxRequest.LOADERS;
for(var _f in _e){
var ldr=_e[_f].loader;
if(!ldr){
continue;
}
if(_c&&_f!=_c){
continue;
}
var _11=new ldr(this);
ajaxRequest.extend(_11,this._openArgs);
ajaxRequest.extend(_11,{queryText:_8.join("&"),queryElem:_9,id:(new Date().getTime())+""+ajaxRequest.COUNT++,hash:_a,span:null});
var _12=_11.load();
if(!_12){
this._ldObj=_11;
ajaxRequest.PENDING[_11.id]=this;
return true;
}
if(!_c){
_d[_d.length]="- "+_f.toUpperCase()+": "+this._l(_12);
}else{
return this._error(_12);
}
}
return _f?this._error("no_loader_matched",_d.join("\n")):this._error("no_loaders");
};
Вот вызов метода _dataReady из метода send
Код: plaintext
1.
2.
3.
4.
5.
_a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method;
var _b=ajaxRequest.CACHE[_a];
if(_b){
this._dataReady(_b[ 0 ],_b[ 1 ]);
return false;
}
при проверке значения _b алерт выдаёт undefined, хотя _a имеет значение.
Вот и не могу понять, почему _b ничего не присваивается..... Я думаю что в этом проблема
Что где надо изменить, может кто-нибудь знает?
...
Рейтинг: 0 / 0
10.08.2008, 13:34
    #35480141
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Ваше _35 должно быть в виде "name=MyName&pass=Password"

А что это за библиотека? существует достаточное количество библиотек в которых делается то же самое но более доступно (без _NN)
...
Рейтинг: 0 / 0
10.08.2008, 20:02
    #35480287
Бурляев Вячеслав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Посмотрел код, так и не понял, как другой синтаксис _35 повлияет на ajaxRequest.CACHE[_a]

Кстати, я думал существует только одна библиотека AJAX:-)
Потому что за библиотека сказать точно не могу. Она мне досталась вместе со скриптом.
Наверное из-за того, что существует множество библиотек, то наверное решение вопроса на форуме не найти, так как многие не смогут ответить, что такое ajaxRequest.CACHE[_a]
...
Рейтинг: 0 / 0
10.08.2008, 20:07
    #35480293
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Про _35 я просто нашел первую ошибку в коде и ее озвучил.
Если хотите конкретный ответ - приложите неработающий код в виде архива к посту - сделаю рабочий.
...
Рейтинг: 0 / 0
10.08.2008, 20:37
    #35480313
Бурляев Вячеслав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Я бы так не утверждал, что код не рабочий.
Он работает на удалённом сервере, на локальном работать не хочет.
Тут дело в настройках, похоже, что сервера. Только вот в каких?
Я сейчас думаю, и прихожу к выводу: какие настройки сервера требуется изменять для работы технологии AJAX? Браузеры думаю трогать не стоит, ибо как уже говорил, что корректность работы скрипта зависит от сервера, на котором он установлен
...
Рейтинг: 0 / 0
10.08.2008, 20:49
    #35480320
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Ну думайте
...
Рейтинг: 0 / 0
11.08.2008, 17:23
    #35481784
Бурляев Вячеслав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Если Вы не видели эту библиотеку, и не знаете об ajaxRequest.cache ничего, то с чего вы считаете, что код не рабочий, чтоб вы там что-то изменили? Да и к чему копаться с чужим рнепоятно откуда взятым кодом е понятно какой библиотеки?
Про _35 вы уже отвечали, что просто увидели первую попавшуюся ошибку, но так и не рассказали, почему вместо {parameter : value} надо писать parameter=value. Вы же не знакомы с этой библиотекой, так почему утверждаете, что приведённый синтаксис есть ошибка7 Непонятно. И вы этого объяснить не можете.....

надеюсь, что всё-таки кто-нибудь слышал про ajaxRequest.cache и откликнется.....
...
Рейтинг: 0 / 0
11.08.2008, 18:04
    #35481859
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
_35 передается методу send() и если это метод объекта XMLHttpRequest ему должна передаваться строка параметров. Хотя в ИЕ кажется можно и Object().
О том что то-то там не работает Вы написали в первом посте.
Почти все участники форума имеют в своем активе программный код более красивый и уж точно работающий и им скучно разбираться в загадочных переменных, которых по меньшей мере уже _35.
Я Вам предложил запостить архив с кодом на форум и обещал сдалать работающий код локально, интернетно, файлово и как угодно еще. Не хотите - не надо.
...
Рейтинг: 0 / 0
11.08.2008, 18:43
    #35481928
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Бурляев ВячеславИ вы этого объяснить не можете.....

надеюсь, что всё-таки кто-нибудь слышал про ajaxRequest.cache и откликнется.....

Да Вы меня раскололи. Ничегошеньки не знаю о ajaxRequest.cache.
...
Рейтинг: 0 / 0
11.08.2008, 20:27
    #35482034
Бурляев Вячеслав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
apapacy
Почти все участники форума имеют в своем активе программный код более красивый и уж точно работающий и им скучно разбираться в загадочных переменных, которых по меньшей мере уже _35.
Я Вам предложил запостить архив с кодом на форум и обещал сдалать работающий код локально, интернетно, файлово и как угодно еще. Не хотите - не надо.
Это готовая библиотека, понимаете? И не моё произведение.
И на одном сервере он работает (происходит вызов php-файла, указанного в качестве параметра в ajaxRequest.query), а на другом не желает (php-файл не выполняется).
Потому НЕ НАДО править код.

Я пытаюсь узнать, нужно ли производить какие-то настройки на сервере или в браузере для того, чтобы технология AJAX работала. Может права где-то нужны, может галочки поставить....
...
Рейтинг: 0 / 0
11.08.2008, 20:32
    #35482037
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
авторПонимаете?
Понимаю. Я и не обвинял Вас в том что Вы это сами написали. Дайте ссылку на сайт в конце концов. Как можно это все разобрвть в редоставленном Вами виде? Я даже не знаю что не работает толком.
...
Рейтинг: 0 / 0
11.08.2008, 21:21
    #35482068
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Бурляев Вячеслав
Я пытаюсь узнать, нужно ли производить какие-то настройки на сервере или в браузере для того, чтобы технология AJAX работала. Может права где-то нужны, может галочки поставить....
А так бы и сказали сразу. К чему весь этот код?

На сервере надо разместить библиотеки JavaScript.
В браузере следует поставить галочку enabe JavaScript.
Извините, что туплю.
...
Рейтинг: 0 / 0
11.08.2008, 23:28
    #35482143
Бурляев Вячеслав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Код, потому что эти два пункта я понимаю. Думал может быть ещё что-то влияет....
Ладно, тема закрыта.
...
Рейтинг: 0 / 0
11.08.2008, 23:45
    #35482151
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Так этож библиотека Котерова и Ко.
Вам на этот форум.

http://forum.dklab.ru/js/jshttprequest/
...
Рейтинг: 0 / 0
11.08.2008, 23:46
    #35482152
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Пост скриптум. Хоть бы строку подключеняия показали.
...
Рейтинг: 0 / 0
12.08.2008, 09:10
    #35482331
Бурляев Вячеслав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает AJAX. Что сделать, чтобы заработал?
Действительно, это библиотека Котерова. Один к одному. Только почему-то название объектов и файлов изменено....
Спасибо, что нашли разработчиков библиотеки.
А подключение так и идёт, как у Котерова прописано - через HTML-тэги <scripts>
Туда пойду щас.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не работает AJAX. Что сделать, чтобы заработал? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]