无法在 ajax jquery 上为 release() 获取 jcrop 对象

Posted

技术标签:

【中文标题】无法在 ajax jquery 上为 release() 获取 jcrop 对象【英文标题】:cannot get jcrop object for release() on ajax jquery 【发布时间】:2012-09-07 19:45:17 【问题描述】:

大家早上好,

我与这个问题斗争了 3 个小时,但我找不到获胜的方法 XD 我有一个 ajax 上传,成功后将打开一个 twitter 引导模式窗口,该窗口将加载图像,初始化 jcrop,然后在关闭时根据选择生成拇指。

这很好用...真正的麻烦是我需要在模态中释放选择,这是我按照 jcrop 网站上的说明进行操作但我无法退出的问题。

现在我已经解释了问题,是时候编写一些代码了:D

var FileUploader_img_frontale = new qq.FileUploader(
    'element':document.getElementById("img_frontale"),
    'debug':false,
    'multiple':false,
    'action':'http://url.com/upload',
    'allowedExtensions':['jpg','png','jpeg','gif'],'sizeLimit':10485760,
    'onComplete':function(id, fileName, responseJSON) 
          $('#pbar_img_frontale').css('display','none');
      $('#img-front-body').html('<img id="cropbox1" src="url.com/images/tmp/b444ac06613fc8d63795be9ad0beaf55011936ac/'+responseJSON.filename+'" style="max-width:400px;max-height:400px;"/>');

          function showCoordsFront(c)       $('#_opera_img_frontale').val(responseJSON.filename+'|'+c.x+'|'+c.y+'|'+c.x2+'|'+c.y2+'|0'); 
            $('#cropbox1').Jcrop(
                boxHeight: 400,
                boxWidth:400,
                trueSize: [responseJSON.width,responseJSON.height],
                allowResize: true,
                aspectRatio: 4/3,
                onChange: showCoordsFront,
                onSelect: showCoordsFront,
            ,function() jcrop1 = this; );
            $('#_opera_img_frontale').val(responseJSON.filename);
            front_uploaded=1;
            $('#modal_img_front').modal('toggle');
         ,'onProgress':function(id, fileName, loaded, total) $('#pbar_img_frontale').css('display','block'); $('#bar_img_frontale').css('width',((loaded*100)/total)+'%'); ,'params':'phpSESSID':'400659255ef857e043b5ab1651406f50','YII_CSRF_TOKEN':'c8248bc34b5371edf162292691dbcf23dc1e697a'); 

这是上传文件的 jquery ajax,你可以看到我已经放了

 function() jcrop1 = this; 

需要抓取 obj,但是当我不通过 ajax 上传图像时它可以工作,但我不明白如何处理它导致释放按钮在 jquery 就绪时将 jcrop1 设置为未定义

var jcrop1;
$("#jcrop1-release").click(function()
   jcrop1.setSelect([0,0,0,0]);
   jcrop1.release();
);

谁能帮帮我?

提前致谢

法比奥

【问题讨论】:

复杂吧?我无法摆脱它,这让我发疯......如果我在 jcrop1=this 显然返回对象之后发出警报,但在那之后似乎 jcrop1 消失在空气中T_T 【参考方案1】:

好的,伙计们,我已经解决了这个问题……问题出在脚本的框架管理中……它将放置多个 $(document).ready() 实例,因此一个 var 在一个中,而 ajax 在另一个中...所以解决方案是绕过 document.ready 并将全局变量放在外面,它完成了它的工作!!!

法比奥

【讨论】:

以上是关于无法在 ajax jquery 上为 release() 获取 jcrop 对象的主要内容,如果未能解决你的问题,请参考以下文章

在 AJAX 请求上为空 $_SESSION 超全局,但保留会话 ID

无法将 jquery/ajax 集成到 django 项目中

jQuery AJAX 获取请求无法正常工作,返回值无法在控制台显示

jQuery绑定ajax:成功在rails 3应用程序中无法用于新创建的(ajax)项目

jQuery 无法处理 AJAX 加载的 html 内容

无法在 jQuery.ajax 中将内容类型设置为“应用程序/json”