Ajax Json在Firefox中与Jquery有关

时间:2011-09-07 13:10:18

标签: javascript jquery ajax json firefox

我在jQuery调用中使用ajax时遇到了一些麻烦,以便产生json响应。基本上我试图获取特定目录中的所有图像。下面是我的jQuery代码,这适用于少于50张图像的目录,但是一旦图像数量大于此数量,Firefox就会中止请求。这适用于Safari,Chrome,IE。要么他们做错了什么,Firefox正在做错,我正在犯错误,或者这是Firefox成为罪魁祸首的罕见时刻之一。我尝试过$ .getJSON并禁用ajax请求的缓存,但这似乎也不起作用。任何帮助将不胜感激,并提前感谢。

    var activeRequest = false;
    var error = "The system could not read the directory at this time.";
    var current = this.location['href'];

    var filesCache = {};
    function addFile(list, varToAdd, path, id){
        if (typeof varToAdd != 'undefined' && varToAdd != null ){
            var imagePath = path;
            var srcPath = path+"/"+varToAdd['file'];
            imagePath = "/cms/images/thumbs/"+imagePath+varToAdd['file'];

            var filename = varToAdd['file'];
            if(filename.length >18){
                filename = filename.substr(0, 15)+"...";
            }

            var fileInfo = '<li id ="'+varToAdd['file'].replace('.', '')+'">';
                fileInfo += '<a class = "thumb" href="'+srcPath+'" target="_blank"><img src="'+srcPath+'" width="'+varToAdd['width']+'" height="'+varToAdd['height']+'" alt="'+varToAdd['file']+'" /></a>';
                fileInfo += '<ul class="fileInfo"><li title="'+varToAdd['file']+'">'+filename+'</li><li>'+varToAdd['dims']+'px</li><li>'+varToAdd['size']+'kb</li></ul>';
                fileInfo += '</li>';

            list.append(fileInfo);
            delete fileInfo;
        }

        else
            return false;

    }
    function lookupFiles(path){
        var cleanPath = decodeURIComponent(path);
        cleanPath += "/";
        var urlLookUp = '/cms/images/lookup/file/?path='+encodeURIComponent(cleanPath);

        var loader = $(".folder-contents .header");
        $.ajaxSetup({
                cache: false
        });
        var ajaxRequest = $.ajax({
            type: 'GET',
            url: urlLookUp,
            data: path,
            dataType: 'json',
            beforeSend: function (request) {
                if(!activeRequest)
                    loader.addClass('loading');
                else
                    return false;
                },
                error: function(XMLHttpRequest, textStatus, errorThrown){
                    loader.addClass('error').removeClass('loading');
                    alert(error);
                },
                success: function(response, status, XMLHttpRequest) {
                    list = $(".folder-contents >  ul.files");
                    if(typeof response != 'undefined' && response != null){
                        if(status == 'success' && (typeof response.files != 'undefined' && response.count > 0)){
                            list.empty();
                            $.each((response.files), function(index, value) {
                                addFile(list, value, path, response.searchTerm);
                            });
                            //list.append('</ul>');

                        }
                        else if (status == 'success' && (typeof response.files != 'undefined' && response.count == 0)){
                            list.empty();
                            list.append('<li class = "noresults">There are no images in this folder</li>');

                        }
                        else{
                            formLabel.addClass('error').removeClass('loading');
                            alert('Error');
                        }
                    }
                    loader.removeClass('loading');
                }
            });
    /*
            var json = $.getJSON( urlLookUp+"format=json&jsoncallback=?", function ( data ) {
                                 console.log( data ); 
                                } );
    */
    }



    $(document).ready(function() {
        $("a.directory").live('click',function(ev){
            ev.preventDefault();

            if($(this).hasClass('open')){
                $(this).addClass('empty').removeClass('open').html('-');
                lookup($(this).attr("title"));
            }
            else if($(this).hasClass('close')){
                $(this).addClass('open').removeClass('close').html('+');
                $(this).parent().find('ul').remove();               
            }

        }); 

        $("a.folder").live('click',function(ev){
            ev.preventDefault();
            lookupFiles($(this).attr("title"));
        });

        $(".files li").live('click', function(ev){
            ev.preventDefault();

            // send ckeditor back what image was selected - url from jquery selector & callBack from the view
            var fileUrl = $(this).find('a').attr("href");
            var callBack = window.CKEditorFuncName;

            window.opener.CKEDITOR.tools.callFunction(callBack, fileUrl);   
            window.close();
        });

    });

0 个答案:

没有答案