Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   YUI 3 проблема с ajax (https://javascript.ru/forum/library-toolkit-framework/21974-yui-3-problema-s-ajax.html)

Andres 01.10.2011 17:10

YUI 3 проблема с ajax
 
Обнаружилась не совсем понятная проблема с повторными запросами.
При первом обращении к ajax все нормально, при повторном Y.one('#'+div) возвращает два значения и если при втором запросе был указан див отличающийся от первого обновляется содержимое обоих дивов. При этом функции передается правильный айди дива для изменения контента. Вот функции инициализации ссылок и собственно самого ajax запроса.
function ajax_links_init(){
            if (Y.one('.ajax')){
                Y.all('.ajax').detach();
                Y.on("click", function(e){e.preventDefault();ajax(this);}, ".ajax");
            }
        }
        function ajax(link){
            var div = link.get('rel');
            var handleSuccess = function(ioId, o){
     			if(o.responseText !== undefined){
     			    try {
     			        var fmajax = Y.JSON.parse(o.responseText);
     			    }
                    catch(e) {
                        alert('Ошибка в запросе');
                    }
                    if (fmajax.tit != undefined){
                        document.title=sitename+' :: '+fmajax.tit;
                    }
                    if (fmajax.alt != undefined){
                        alert(fmajax.alt);
                    }
                    if (fmajax.text != undefined){
                        Y.one('#'+div).setContent(fmajax.text);
                        console.log(Y.one('#'+div),'#'+div);
                    }
                    ajax_links_init();
     			}
      		};
      		var handleFailure = function(ioId, o){
                if(o.responseText !== undefined){
                    alert(o.responseText);
      		    }
      		};
      		Y.on('io:success', handleSuccess);
      		Y.on('io:failure', handleFailure);
      		var cfg = {
     			method: "POST"
      		};
            var request = Y.io(link.get('href')+'?using_ajax=1', cfg);
        }
Помогите плиз.

Andres 02.10.2011 13:38

Решение нашел. Ответили на форуме поддержки. Может кому пригодится.
Вот эту часть кода.
Y.on('io:success', handleSuccess);
           Y.on('io:failure', handleFailure);
           var cfg = {
              method: "POST"
           };
            var request = Y.io(link.get('href')+'?using_ajax=1', cfg);

Меняем на
Y.io(link.get('href')+'?using_ajax=1', {
                method: "POST",
                on: {
                    success: handleSuccess,
                    failure: handleFailure
                }
            });


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