javascript - 怎么可能,Chrome 和 IE 中的 ajaxing 比 Mozilla 慢得多?

标签 javascript jquery ajax

我想请您找出重点,为什么我正在处理的网站速度很慢。

问题的条件:

  • 大行数(所以我认为问题可能与此有关。)
  • 有 ajaxing 事件(我厌倦了评论它,问题就消失了)
  • 不使用 Mozilla(这种卡住效果出现在 IE 和 Chrome 中)

问题描述(见图片):

  • 我改变输入的值
  • 在有一个 ajax 调用(为了计算奖金)之后,它在 FF 中花费了大约 30 毫秒,否则超过 1 秒
  • 在 ajax 完成之前会卡住(但 ajax 未设置为 async:false)
  • 只有在那之后我才能更改下一个输入

我已经厌倦了重现错误,但我做不到。于是见原站:

网站:foto/fotokidolgozas/elohivas-beallitasok.php

登录并通过:d838292@rtrtr.com

更新:现在工作正常,技巧如下:

我使用隐藏的输入字段,它们的值是 json_encode-d 字符串。我可以随时用 js 处理它们。

enter image description here

感谢您的帮助!

代码:

$('#cikkek,#magic_bar').on("change","select,textarea,input[type!=hidden]",function(event_object){
    if( $(this).attr('name') == "kijelolve" && !$(this).parents('#magic_bar').length)return true;

    var cikk_id = $(this).parents('.cikk').attr('id');
    var cikk_tipus = $("input[name=cikk_tipus]").val();
    var tulajdonsag = $(this).attr('name');     
    var ertek = $(this).val();
    if(ertek == "-1")return false;      
    if($(this).is('[type=checkbox]'))ertek = $(this).prop("checked")?'1':'0';

    if(cikk_tipus=='fotokidolgozas' && (tulajdonsag=='meret'||tulajdonsag=='vagas'))
        {
            var sor = $(event_object.target).parents('.cikk');
            var act_meret = sor.find('select[name=meret]').val();
            var act_fill = sor.find('select[name=vagas]').val();
            var act_zold_class = sor.find("input[name=zold_"+act_meret+"]").val()=="1" ?"zold":"feher" ;
            var name = "src_"+act_meret+"_"+act_fill;                   
            var name2 = "szoveges_uzenet_"+act_meret+"_"+act_fill;                  
            sor.find(".img_cont").find("img").attr("src",sor.find("input[name="+name+"]").val());   
            sor.find(".szoveges_uzenet").text(sor.find("input[name="+name2+"]").val());
            sor.find(".dpi_megfelel").text(sor.find("input[name=minoseg_"+act_meret+"]").val()+" ("+sor.find("input[name=dpi_"+act_meret+"]").val()+" dpi)");
            sor.find("select[name=meret]").removeClass("feher zold").addClass(act_zold_class);
        }

    var before = now();

    //this is the ajax part
    if(ajax_modositaskor)
    $.post('/_fn/cikk/mod.php',{
        'cikk_tipus':cikk_tipus,
        'cikk_id':cikk_id,
        'tulajdonsag':tulajdonsag,
        'ertek':ertek
        },function(a){
            var elapsed = now() - before;
            if(a[0]!="1")
            {
                //error
                alert(a[0]);
                return;
            }
            if(a[1]!="-1")
            {
                //there is new price
                $(event_object.target).parents('.cikk').find('.ar').text(a[1]);     
            }
            if(a[2]!="-1")$('#cikkek_ara').text(a[2]);
            osszegzest_frissit(a[3]);               
            var php_time = Math.round(a[4])
            a_min = Math.min(a_min,elapsed);
            p_min = Math.min(p_min,parseFloat(php_time));
            a_max = Math.max(a_max,elapsed);
            p_max = Math.max(p_max,parseFloat(php_time));
            if(!a_avg)a_avg = elapsed;else a_avg= Math.round((a_avg+elapsed)/2);
            if(!p_avg)p_avg = php_time;else p_avg = Math.round((p_avg+php_time)/2);             
            trace("ajax="+elapsed+"\tphp="+php_time+"\tajax_min="+a_min+"\tphp_min="+p_min+"\tajax_max="+a_max+" \tphp_max="+p_max+"\tajax_avg="+a_avg+" \tphp_avg="+p_avg);                

        },"json").error(function() { postHiba() });


});

最佳答案

问题是隐藏数据太大(see my other question),它减少了处理时间。 (Firefox 好像编码得很好,因为这个无所谓)

现在问题已经解决了。

关于javascript - 怎么可能,Chrome 和 IE 中的 ajaxing 比 Mozilla 慢得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11030602/

相关文章:

javascript - d3.ease淡入淡出图像

javascript - 如何仅在事件簿中的第一张幻灯片后显示后退按钮

javascript - 动态生成的删除按钮应删除其 p 标签

javascript - 如何将 jQuery 函数应用于 iframe 中的子页面?

javascript - jquery 在要检查的标签之前检查前一个复选框

javascript - 成功返回 jQuery ajax 后继续每次迭代的工作

javascript - datepicker 显示基于年份的日期 - JQuery

Jquery toggleClass 和 CSS 动画 div 宽度

php - 如何从php中获取jquery中的数组元素

javascript - Ajax 调用 jSON 接收未定义