【问题标题】:Cannot get image data (base64) from textarea second time after submitting form using ajax使用ajax提交表单后第二次无法从textarea获取图像数据(base64)
【发布时间】:2016-03-10 05:58:42
【问题描述】:

我正在从隐藏的 textarea 和该值获取 base64 格式的图像数据 正在通过 ajax 保存,并且图像是第一次生成的 使用 ajax 提交表单,在 ajax 成功方法中我得到新的图像 url 我使用 $('.contained').attr("src",data);但第二次 当我上传图片时,我没有在 textarea 中得到值,所以没有图片 是生成的,但是当我刷新页面然后再次提交时 工作正常我不想刷新页面。请帮助解决我的问题。

查看:

<script type="text/javascript">
$("#upload_course").on('submit',function(e){
    e.preventDefault();
    var txtareaval = $('#image_source').val();

    var baseurl="<?php echo base_url(); ?>";

    var formData = new FormData($("#upload_course")[0]);

 $.ajax({
    url: "<?php echo base_url();?>upload_course_image/do_upload",
        type: 'POST',
        async : false,
        cache : false,
        contentType : false,
        processData:false,
        data: formData,
        success: function(data){

        $('.loader').show();
        $('.contained').attr("src",data);
         setTimeout(function () {
           $('.loader').hide();
           $("#show_image_preview").show();
         }, 1000);
       },
    error: function(){                      
       alert('Error while request..');
       }
   });
});
</script>

<form  enctype="multipart/form-data" method="post" accept-charset="utf-8" id="upload_course" action="<?php echo site_url('upload_course_image/do_upload'); ?>"> 
<input type="hidden" name="c_id" value="<?=$result;?>" />
<img class="contained" data-purpose="image-preview" style="max-width:500px;width:500px;height: 300px;" src="<?php echo $image; ?>" />
<textarea id="image_source" name="test" style="display:none"></textarea>
<input type="File" name="course_img" id="course_img"/>
<input type="submit" name="submit" value="Save" class="btn btn-primary btn btn-success" id="submit-id-submit"/> 
</form>

【问题讨论】:

    标签: javascript php jquery ajax codeigniter


    【解决方案1】:

    像这样将当前时间添加到图像的末尾

    $('.contained').attr("src",data + '?' + new Date().getTime()).show());
    

    【讨论】:

    • 不,问题是我第二次上传图像时没有保存图像。直到我刷新页面。
    • alert("txtareaval "+txtareaval );显示空白值
    • 我认为是因为您没有为 txtareaval 设置值。所以很明显它是空白的。 &lt;textarea id="image_source" name="test" style="display:none"&gt;&lt;/textarea&gt; 在这里var txtareaval = $('#image_source').val();
    • 我在这里使用 jcrop,我通过 $('#image_source').text(canvas.toDataURL());
    • 您的代码中有很多错误。像这个var formData = new FormData($("#upload_course")[0]); 你没有指定它的标签/索引是什么......它应该是new FormData('file', $("#upload_course")[0])。另外,如果您使用 AJAX,则不需要使用
      。最后,base_url() 的冗余使用。实际上,你可以只使用 JS window.location.origin
    猜你喜欢
    • 2012-12-03
    • 2017-03-17
    • 2020-11-24
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2012-03-14
    • 2014-04-08
    • 1970-01-01
    相关资源
    最近更新 更多