Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Ajax разбор метода (https://javascript.ru/forum/jquery/9496-ajax-razbor-metoda.html)

Kolyaj 21.05.2010 10:00

Цитата:

Сообщение от micscr
эта ниша уже занята.

Когда Гугл начинал, ниша поиска тоже была занята. Когда Яндекс начинал, она тоже была занята.

Мне вот интересно, почему на такие вещи все так реагируют, как будто их заставляют этот очередной велосипед использовать? Видишь недостатки -- покажи, достоинства -- похвали, не нужен он тебе -- ну иди мимо.

mycoding 21.05.2010 10:12

Вот, что получилось

Js.extend(Js,{
	ajax : function(param){					
				var xhr,
				url = param.url,
				method = param.method || 'GET',
				data = param.data || null,
				async = (param.async==undefined)?true:param.async,
				complete = param.complete;
				if(window.ActiveXObject){xhr=new ActiveXObject("Microsoft.XMLHTTP");}
				else if(window.XMLHttpRequest) {xhr=new XMLHttpRequest();}
				else {alert('Видимо в вашем браузере не поддреживается ajax');}
				xhr.onreadystatechange = function(){
					if(xhr.readyState != 4 || xhr.readyState==0){/*Loading*/;}
					if(xhr.readyState == 4){
						if(xhr.status == 200){/*Пришёл ответ*/if(complete){complete();}}
						else{elem.html("Error: returned status code " + xhr.status + " " + xhr.statusText);}
					}
				};
				if(method=='GET') {xhr.open(method, url, async);xhr.send(data);}
				else{
					xhr.open(method, url, async);
					xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
					xhr.send(data);
				}
				return xhr;
			}
});

Я просто не пойму как же реализовать, чтобы можно было передать в этот запрос что делать когда всё загрузиться. Ведь надо будет получить
данные запроса, а как их получить если они внутри?
Их же надо прописать в вызываемой функции.
Т.е.
$.ajax({url:'index.php',complete:function(xhr){
         if(xhr.responseText=='YES'){alert('YES');}
         else if(xhr.responseText=='NO') {alert('NO');}
         else {alert('Какие-то не те данные');}
}};

Но вот как в JQuery передаётся информация внутрь функции я не пойму.

JQuery пример
$.ajax({
    url: '/ajax/example.html',             // указываем URL и
    dataType : "json",                     // тип загружаемых данных
    success: function (data, textStatus) { // вешаем свой обработчик на функцию success
        $.each(data, function(i, val) {    // обрабатываем полученные данные
            /* ... */
        });
    }
});

Вот как туда попадаёт data, если
function success() {
            // If a local callback was specified, fire it and pass it the data
            if ( s.success ) {
                s.success.call( callbackContext, data, status, xhr );
            }
 
            // Fire the global callback
            if ( s.global ) {
                trigger( "ajaxSuccess", [xhr, s] );
            }
        }

Нету переменных, или я чего не пойму.

micscr 21.05.2010 10:25

Цитата:

Сообщение от mycoding (Сообщение 55913)
http://javascript.ru/blog/mycoding/Pishem-svoj-jquery
Это моя курсовая просто да и интересно тоже.

Ну, курсовая тогда понятно. Кто то минусов тебе туда накидал. Может нужно не Пишем свой jQuery, а Пишем свой js-фреймворк ?

Octane 21.05.2010 10:40

Цитата:

Сообщение от mycoding
if(xhr.status == 200){/*Пришёл ответ*/if(complete){complete();}}

if(xhr.status == 200){/*Пришёл ответ*/if(complete){complete(*!*xhr.responseText*/!*);}}

mycoding 21.05.2010 10:57

Заработало :thanks:


Часовой пояс GMT +3, время: 08:50.