【问题标题】:jQuery get an image source encrypted/jQuery 获取加密的图像源/
【发布时间】:2010-07-03 13:03:51
【问题描述】:

我使用 serializeArray 解决了表单的问题,但您可能知道它缺乏对输入/文件的支持,因此决定将其与我的序列化数据合并。现在我创建对象和所有我用 .val() 获得文件名的东西。但我不能图像源。例如我想这样做:

        alert(jQuery('.inputBox#pic').attr(src));
        var obj = {'name'   : 'pic',
                   'value'  : jQuery('input#pic').src};

唯一的问题是它不起作用。我无法准备好要上传的图像源。如果没有它,我将无法发出成功的 POST 请求。

【问题讨论】:

    标签: jquery image upload


    【解决方案1】:

    你不能这样发布文件。

    即使您能够获得文件的完整来源(在某些浏览器中甚至不允许这样做),它仍然是您无法访问的本地文件的地址。

    将文件发布到服务器的唯一方法是发布上传控件所在的表单。出于安全原因,没有其他方法可以从客户端计算机获取文件。这意味着您必须在页面上发布实际的表单,您不能进行 AJAX 发布。

    【讨论】:

      【解决方案2】:

      您可以查看jQuery.form,它可用于 ajaxify 您的表单。还有supports file input fields

      【讨论】:

      • 我试过了,但对我来说效果不太好。不过感谢您的建议。
      【解决方案3】:

      alert() 电话的意义何在?你想用src 属性做什么? jQuery(selector).src 没有做任何事情,因为您无法通过这种方式访问​​ img 元素或其属性。

      如果你想要src 的值,那么使用:

      var imgSrc = $('#pic').attr('src');
      // or
      var obj = {
          'name' : 'pic',
          'value' : $('#pic').attr('src');
      };
      

      我不确定您打算如何以这种方式执行文件上传,但您会这样做。尽管如此,我还是建议您略读jQuery documentation 以确保您了解jQuery DOM 操作的基础知识。您总是使用 .attr() 来获取或设置 jQuery 结果的元素属性。如果要访问实际的元素对象或其属性,则需要使用:

      var elPic = $('#pic')[0];
      // or
      var imgSrc = $('#pic')[0].src;
      

      此外,将 ID 选择器与类选择器混合通常没有意义,因为 ID 应该是唯一的。

      最后,我假设“.attr(src)”是您代码中的拼写错误,但如果不是,那么您需要复习一下您的 JavaScript,以便了解变量和字符串文字之间的区别。 String literals 需要用单引号或双引号括起来,否则 JavaScript 会认为您正在向函数传递一个名为 src 的变量而不是字符串“src”。

      【讨论】:

      • 该警报是其中调试代码的一部分。但我发现它无法按照我想要的方式完成,所以我放弃了这个作为一种解决方法。感谢您的帮助
      猜你喜欢
      • 1970-01-01
      • 2014-02-06
      • 2020-07-17
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2014-02-12
      • 1970-01-01
      相关资源
      最近更新 更多