Какой Ajax класс юзаете вы?

Статус
В этой теме нельзя размещать новые ответы.

tonagra

Создатель
Регистрация
19 Апр 2006
Сообщения
17
Реакции
14
Стал перед выбором класса для CMS'ски.
Пока выбор остановился на Xajax.
А что пользуете Вы? Что посоветуете? Может есть что-то более удобное и простое?
 
tonagra написал(а):
Стал перед выбором класса для CMS'ски.
Пока выбор остановился на Xajax.
А что пользуете Вы? Что посоветуете? Может есть что-то более удобное и простое?
+1 Хочется что-то нормальное и простое, т.к. пишу движок Торрент-Трекера и хочу туда всунуть AJAX...
 
Интересная ссылочка, думаю там есть нечто полезное.
 
Уже поздно... :D Я украл AJAX из DataLife и доволен как слон - работает быстро и легко! :rolleyes:
 
StirolXXX написал(а):
Уже поздно... :D Я украл AJAX из DataLife и доволен как слон - работает быстро и легко! :rolleyes:

Обидно блин, сам не додумался в скриптах с использованием аджакса посмотреть :confused:
 
JSilver написал(а):
В студию! :)
Я думаю, это не только мне время сэкономит.

PHP:
<script language="javascript" type="text/javascript" src="js/ajax.js"></script>
<script type="text/javascript">
function send(){

    var frm = document.mybonus;
	var bonus_type = '';

    for (var i=0;i < frm.elements.length;i++) {
        var elmnt = frm.elements[i];
        if (elmnt.type=='radio') {
            if(elmnt.checked == true){ bonus_type = elmnt.value; break;}
        }
    }

	var ajax = new tbdev_ajax();
	ajax.onShow ('');
	var varsString = "";
	ajax.requestFile = "mybonus.php";
	ajax.setVar("id", bonus_type);
	ajax.method = 'POST';
	ajax.element = 'ajax';
	ajax.sendAJAX(varsString);
}
</script>
<div id="loading-layer" style="display:none;font-family: Verdana;font-size: 11px;width:200px;height:50px;background:#FFF;padding:10px;text-align:center;border:1px solid #000">
	<div style="font-weight:bold" id="loading-layer-text">Загрузка. Пожалуйста, подождите...</div><br />
	<img src="pic/loading.gif" border="0" />
</div>
<div id="ajax">
<table class="main" width="550" border="1" cellspacing="0" cellpadding="5">
<?
	$my_points = $CURUSER["bonus"];
	$res = mysql_query("SELECT * FROM bonus") or sqlerr(__FILE__,__LINE__);
	while ($arr = mysql_fetch_assoc($res)) {
		$id = $arr["id"];
		$bonus = $arr["name"];
		$points = $arr["points"];
		$descr = $arr["description"];
		$output .= "<tr><td><b>$bonus</b><br />$descr</td><td><center>$points&nbsp;/&nbsp;$my_points</center></td><td><center><input type=\"radio\" name=\"bonus_id\" value=\"$id\" /></center></td></tr>\n";
	}
?>
	<tr><td class="colhead">Тип бонуса</td><td class="colhead">Очки</td><td class="colhead">Выбор</td></tr>
	<form action="mybonus.php" name="mybonus" method="post">
<?=$output;?>
		<tr><td colspan="3"><input type="submit" onClick="send(); return false;" value="Обменять" /></td></tr>
	</form>
</table>
</div>

ajax.js:

Код:
function _get_obj_toppos(obj)
{
var top = obj.offsetTop;
while( (obj = obj.offsetParent) != null )
{
top += obj.offsetTop;
}
return top;
}
function center_div()
{
this.divname = '';
this.divobj  = '';
}
center_div.prototype.clear_div = function()
{
try
{
if ( ! this.divobj )
{
return;
}
else
{
this.divobj.style.display  = 'none';
}
}
catch(e)
{
return;
}
}
center_div.prototype.Ywindow = function()
{
var scrollY = 0;
if ( document.documentElement && document.documentElement.scrollTop )
{
scrollY = document.documentElement.scrollTop;
}
else if ( document.body && document.body.scrollTop )
{
scrollY = document.body.scrollTop;
}
else if ( window.pageYOffset )
{
scrollY = window.pageYOffset;
}
else if ( window.scrollY )
{
scrollY = window.scrollY;
}
return scrollY;
}
center_div.prototype.move_div = function()
{
try
{
this.divobj = document.getElementById( this.divname );
}
catch(e)
{
return;
}
// Figure width and height
var my_width  = 0;
var my_height = 0;
if ( typeof( window.innerWidth ) == 'number' )
{
my_width  = window.innerWidth;
my_height = window.innerHeight;
}
else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
{
my_width  = document.documentElement.clientWidth;
my_height = document.documentElement.clientHeight;
}
else if ( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
{
my_width  = document.body.clientWidth;
my_height = document.body.clientHeight;
}
this.divobj.style.position = 'absolute';
this.divobj.style.display  = 'block';
this.divobj.style.zIndex   = 99;
var divheight = parseInt( this.divobj.style.Height );
var divwidth  = parseInt( this.divobj.style.Width );
divheight = divheight ? divheight : 50;
divwidth  = divwidth  ? divwidth  : 200;
var scrolly = this.Ywindow();
var setX = ( my_width  - divwidth  ) / 2;
var setY = ( my_height - divheight ) / 2 + scrolly;
setX = ( setX < 0 ) ? 0 : setX;
setY = ( setY < 0 ) ? 0 : setY;
this.divobj.style.left = setX + "px";
this.divobj.style.top  = setY + "px";
}
function tbdev_ajax(file){
this.AjaxFailedAlert = "Ваш браузер не поддерживает расширенные возможности управления сайтом, мы настоятельно рекомендуем сменить браузер.\n";
this.requestFile = file;
this.method = "POST";
this.URLString = "";
this.encodeURIString = true;
this.execute = false;
this.loading_fired		= 0;
this.centerdiv          = null;
this.onLoading = function() { };
this.onLoaded = function() { };
this.onInteractive = function() { };
this.onCompletion = function() { };
this.onShow = function( message )
{
if ( ! this.loading_fired )
{
this.loading_fired = 1;
// Change text?
if ( message )
{
document.getElementById( 'loading-layer-text' ).innerHTML = message;
}
this.centerdiv         = new center_div();
this.centerdiv.divname = 'loading-layer';
this.centerdiv.move_div();
}
return;
};
this.onHide = function()
{
try
{
if ( this.centerdiv && this.centerdiv.divobj )
{
this.centerdiv.clear_div();
}
}
catch(e)
{
}
this.loading_fired = 0;
return;
};
this.createAJAX = function() {
try {
this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (err) {
this.xmlhttp = null;
}
}
if(!this.xmlhttp && typeof XMLHttpRequest != "undefined")
this.xmlhttp = new XMLHttpRequest();
if (!this.xmlhttp){
this.failed = true;
}
};
this.setVar = function(name, value){
if (this.URLString.length < 3){
this.URLString = name + "=" + value;
} else {
this.URLString += "&" + name + "=" + value;
}
}
this.encVar = function(name, value){
var varString = encodeURIComponent(name) + "=" + encodeURIComponent(value);
return varString;
}
this.encodeURLString = function(string){
varArray = string.split('&');
for (i = 0; i < varArray.length; i++){
urlVars = varArray[i].split('=');
if (urlVars[0].indexOf('amp;') != -1){
urlVars[0] = urlVars[0].substring(4);
}
varArray[i] = this.encVar(urlVars[0],urlVars[1]);
}
return varArray.join('&');
}
this.encodeVAR = function(url){
url = url.toString();
var regcheck = url.match(/[\x90-\xFF]/g);
if ( regcheck )
{
for (var i = 0; i < i.length; i++)
{
url = url.replace(regcheck[i], '%u00' + (regcheck[i].charCodeAt(0) & 0xFF).toString(16).toUpperCase());
}
}
return escape(url).replace(/\+/g, "%2B");
}
this.runResponse = function(){
eval(this.response);
}
this.sendAJAX = function(urlstring){
this.responseStatus = new Array(2);
if(this.failed && this.AjaxFailedAlert){
alert(this.AjaxFailedAlert);
} else {
if (urlstring){
if (this.URLString.length){
this.URLString = this.URLString + "&" + urlstring;
} else {
this.URLString = urlstring;
}
}
if (this.encodeURIString){
var timeval = new Date().getTime();
this.URLString = this.encodeURLString(this.URLString);
//this.setVar("rndval", timeval);
}
if (this.element) { this.elementObj = document.getElementById(this.element); }
if (this.xmlhttp) {
var self = this;
if (this.method == "GET") {
var totalurlstring = this.requestFile + "?" + this.URLString;
this.xmlhttp.open(this.method, totalurlstring, true);
} else {
this.xmlhttp.open(this.method, this.requestFile, true);
}
if (this.method == "POST"){
try {
this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
} catch (e) {}
}
this.xmlhttp.send(this.URLString);
this.xmlhttp.onreadystatechange = function() {
switch (self.xmlhttp.readyState){
case 1:
self.onLoading();
break;
case 2:
self.onLoaded();
break;
case 3:
self.onInteractive();
break;
case 4:
self.response = self.xmlhttp.responseText;
self.responseXML = self.xmlhttp.responseXML;
self.responseStatus[0] = self.xmlhttp.status;
self.responseStatus[1] = self.xmlhttp.statusText;
self.onCompletion();
if(self.execute){ self.runResponse(); }
if (self.elementObj) {
var elemNodeName = self.elementObj.nodeName;
elemNodeName.toLowerCase();
self.onHide();
if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea"){
if (self.response == 'error') { alert('Доступ отклонен'); } else {
self.elementObj.value = self.response;
}
} else {
if (self.response == 'error') { alert('Доступ отклонен'); } else {
self.elementObj.innerHTML = self.response;
}
}
}
self.URLString = "";
break;
}
};
}
}
};
this.createAJAX();
}

Разберешся?
 

Вложения

  • loading.gif
    loading.gif
    734 байт · Просмотры: 88
Будут непонятки - буду смотреть DLE
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху