当前位置: 首页 > 知识库问答 >
问题:

如何在AJAX sucess函数中调用element.onload?

蒯翰墨
2023-03-14

我正在php codeignitor中使用AJAX上载一个图像,并且在上载时返回一个包含上载图像路径的JSON响应,然后我将该路径插入到一个img标记中进行预览

现在,我想做的是获得的高度和宽度呈现的img标签更新后,它的路径,但问题是,我总是得到一个0,所以请有人帮助我在这里

这是我的JS


    function uploadAd(){
    // console.log($('#uploadedPDF').prop('files'));
    var file_data = $('#uploadedAdFile').prop('files')[0];
    var form_data = new FormData();
    form_data.append('uploadedAdFile', file_data);
    // alert(form_data);
    $.ajax({

      url: BASE_URL+'home/uploadAdFile', // point to server-side PHP script
      dataType: 'json',  // what to expect back from the PHP script, if anything
      cache: false,
      contentType: false,
      processData: false,
      data: form_data,
      type: 'post',
      async: false,
      success: function(data){
          console.log(data);
          if(data.status == -1){
            // If file extension Validation failed
            $('#uploadedAdFileMsg').html(data.msg);
            $('#uploadedAdFileMsg').removeClass('hidden');
            $('#uploadedAdFilePreview').addClass('hidden');
          }
          else{
            // If file extension Validation passed
            $('#uploadedAdFilePreview').attr('src', data.path); // Render file in img tag

            $('#uploadedAdFileMsg').addClass('hidden');
            $('#uploadedAdFilePreview').removeClass('hidden');

            console.log(document.getElementById('uploadedAdFilePreview').naturalWidth);
            // console.log()
          }
      },
      complete: function(){
        console.log('Complte '+document.getElementById('uploadedAdFilePreview').naturalWidth);
      }
    }).done(function(){
      console.log('Done '+document.getElementById('uploadedAdFilePreview').naturalWidth);
    });
  }
  $(document).ajaxComplete(function(){
    console.log('AJAX '+document.getElementById('uploadedAdFilePreview').naturalWidth);
  })

正如你所看到的,我在不同的地方插入了得到的高度代码,但没有运气

PS:我也用了clientHeight,height,naturalHeight,但还是0

所以我得出的结论是height函数是在img标记呈现其内容之前调用的,因此它显示一个0

那么我可以在AJAX成功函数中包含onload类型的函数吗?

谢谢

共有1个答案

宫晟
2023-03-14

我解决了:D,

实际上,我在Jquery返回的对象上使用了onload,这是错误的,它应该在document.getElement上使用,所以我将

element.onload=function(){getHeight();}

在我的success函数os AJAX中,它工作了:)

 类似资料:
  • 问题内容: 我有一个plsql函数,我想从我的函数中调用另一个函数。我怎样才能做到这一点? 这是正确的方法吗? 问题答案: 函数必须返回一个值,否则您应该具有该函数的分配目标。

  • 问题内容: 我正在执行以下操作,但没有用 我正在调用一个返回游标的函数,所以我猜是问题所在 还有另一种方法吗? 问题答案: 我认为您的意思是参考光标。这是一个PL / SQL构造,用作指向查询返回的一组记录的指针。这意味着它必须由运行查询的客户端解释。例如,我们可以将Ref Cursor映射到JDBC或ODBC ResultSet。 您的基本声明当然没有错。这是一个类似于您自己的函数: 我可以在更

  • 我一直在学习一些关于如何创建会话对象的课程,效果很好,如果我把完整的代码放到一个PHP文件中,一切都很好! 我想做的是将其放在另一个模块(PHP文件)中,只需使用一行(或等效行)即可,例如

  • 问题内容: 我需要能够调用一个函数,以便运行代码以动态检索图像的来源。以下代码片段显示了我想要的示例: 我敢肯定这很简单,但是我在ng- src文档中 什么都找不到!还有其他人打过这个吗? 提前致谢! 指令(基于答案的示例) 其他人建议使用指令。我无法发布客户端代码,所以我写了一个简短的示例,说明了在plunker中的外观(请参见此处)。核心指令本身是: 我知道我有什么做为一个例子,很可能只是用在

  • 问题内容: 如果要在Keras中使用BatchNormalization函数,是否仅需要在开始时调用一次? 我为此阅读了此文档:http : //keras.io/layers/normalization/ 我看不到该怎么称呼它。下面是我尝试使用它的代码: 我问是因为如果我用第二行(包括批处理规范化)运行代码,而如果我不使用第二行运行代码,则会得到类似的输出。因此,要么我没有在正确的地方调用该函数

  • 问题内容: 我已经在SQL中创建了一个函数,现在我需要在C#应用程序中使用该函数。 我尝试使用类似的方法,但由于得到以下内容,看来我做错了: …当我给出第一个参数和第二个参数时 这是我正在谈论的代码: 我的函数接受两个整数参数并返回一个表。我在Visual Studio中对其进行了检查,并且可以正常工作,但是无法在我的应用程序中正常工作。 这是我的函数声明: 问题答案: 您的SQL有点过时了,应该