【问题标题】:Ajax, php output, iframes and JCropAjax、php 输出、iframe 和 JCrop
【发布时间】:2013-08-23 11:18:58
【问题描述】:

由于兼容性,我已经使用 iframe 实现了 AJAX 上传,但是我现在尝试将 AJAX 上传返回的结果与 jcrop 绑定,因为结果是在之后加载的。

PHP 输出格式如下:

<img src="upload/'.$new_name.'" id="cropbox" />

            <!-- This is the form that our event handler fills -->
            <form action="crop.php" method="post" onsubmit="return checkCoords();">
                <input type="hidden" id="x" name="x" />
                <input type="hidden" id="y" name="y" />
                <input type="hidden" id="w" name="w" />
                <input type="hidden" id="h" name="h" />
                <input type="submit" value="Crop Image" class="btn btn-large btn-inverse" />
            </form>

我的问题是jcrop 没有与图像绑定。

这是因为绑定它的jQuery应该在AJAX上传发布结果之后运行吗?还是应该自动绑定图片?

jcrop的JSenter code here如下:

<script type="text/javascript">
$(function(){

    $('#cropbox').Jcrop({
      aspectRatio: 1,
      onSelect: updateCoords
    });

  });

  function updateCoords(c)
  {
    $('#x').val(c.x);
    $('#y').val(c.y);
    $('#w').val(c.w);
    $('#h').val(c.h);
  };

  function checkCoords()
  {
    if (parseInt($('#w').val())) return true;
    alert('Please select a crop region then press submit.');
    return false;
  };
</script>

谁能告诉我为什么js没有与图像绑定?或者提供什么建议?

【问题讨论】:

    标签: php jquery ajax iframe jcrop


    【解决方案1】:

    问题在于 js 脚本,因为上传图像时 js 函数试图绑定到不存在的 id,这就是 js 脚本无法运行的原因。上面文件中的 js 必须在加载图像的末尾放入 js 函数中,因此在图像加载完成后,jquery 将 id 绑定到 jcrop。

    例如旧脚本。

    <script type="text/javascript">
    
        $(document).ready(function () {
    
            $("#formsubmit").click(function (event) {
                event.preventDefault();
                var iframe = $('<iframe name="postiframe" id="postiframe" style="display: none" />');
    
                $("body").append(iframe);
    
                var form = $('#theuploadform');
                form.attr("action", "uploader.php");
                form.attr("method", "post");
                form.attr("enctype", "multipart/form-data");
                form.attr("encoding", "multipart/form-data");
                form.attr("target", "postiframe");
                form.attr("file", $('#userfile').val());
                form.submit();
    
                $("#postiframe").load(function () {
                    iframeContents = $("#postiframe")[0].contentWindow.document.body.innerHTML;
                    $("#textarea").html(iframeContents);
                    $("#postiframe").remove();
                    $(document).find('#postiframe').remove();
                });
    
    
            });
    
        });
    </script> 
    <script type="text/javascript">
    $(function(){
    
        $('#cropbox').Jcrop({
          aspectRatio: 1,
          onSelect: updateCoords
        });
    
      });
    
      function updateCoords(c)
      {
        $('#x').val(c.x);
        $('#y').val(c.y);
        $('#w').val(c.w);
        $('#h').val(c.h);
      };
    
      function checkCoords()
      {
        if (parseInt($('#w').val())) return true;
        alert('Please select a crop region then press submit.');
        return false;
      };
    </script>
    

    变成:

    <script type="text/javascript">
    
        $(document).ready(function () {
    
            $("#formsubmit").click(function (event) {
                event.preventDefault();
                var iframe = $('<iframe name="postiframe" id="postiframe" style="display: none" />');
    
                $("body").append(iframe);
    
                var form = $('#theuploadform');
                form.attr("action", "uploader.php");
                form.attr("method", "post");
                form.attr("enctype", "multipart/form-data");
                form.attr("encoding", "multipart/form-data");
                form.attr("target", "postiframe");
                form.attr("file", $('#userfile').val());
                form.submit();
    
                $("#postiframe").load(function () {
                    iframeContents = $("#postiframe")[0].contentWindow.document.body.innerHTML;
                    $("#textarea").html(iframeContents);
                    $("#postiframe").remove();
                    $(document).find('#postiframe').remove();
    
                    //attempt at joining
                    $(function(){
    
                        $('#cropbox').Jcrop({
                          aspectRatio: 1,
                          onSelect: updateCoords
                        });
    
                      });
    
                      function updateCoords(c)
                      {
                        $('#x').val(c.x);
                        $('#y').val(c.y);
                        $('#w').val(c.w);
                        $('#h').val(c.h);
                      };
    
                      function checkCoords()
                      {
                        if (parseInt($('#w').val())) return true;
                        alert('Please select a crop region then press submit.');
                        return false;
                      };
                });
    
    
            });
    
        });
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 2015-02-28
      • 2023-03-13
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多