dojo.io.iframe错误当上传一个文件

wgxvkvu9  于 2022-12-16  发布在  Dojo
关注(0)|答案(3)|浏览(141)

今天,当尝试使用dojo. io. iframe上传小于2 MB的图像文件时,遇到了一个有趣的问题。
调用了处理表单的函数,但在表单发送到服务器之前,我收到了以下错误:

类型错误:如果未定义.getElementsByTagName(“文本区域”)[0]

我的函数是用来操作的形式后:

function uploadnewlogo(){

var logoDiv = dojo.byId('userlogo');
var logoMsg = dojo.byId('uploadmesg');

//prep the io frame to send logo data.
dojo.io.iframe.send({
    url: "/users/profile/changelogo/",
    method: "post",
    handleAs: "text",
    form: dojo.byId('logoUploadFrm'),
    handle: function(data,ioArgs){

        var response = dojo.fromJson(data);

        if(response.status == 'success'){

            //first clear the image
            //dojo.style(logoDiv, "display", "none");
            logoDiv.innerHTML = "";

            //then we update the image
            logoDiv.innerHTML = response.image;

        }else if(response.status == 'error'){

            logoMsg.innerHTML = data.mesg;

        }else{              

            logoMsg.innerHTML = '<div class="error">Whoops! We can not process your image.</div>';
        }

    },
    error: function(data, ioArgs){

        logoMsg.innerHTML = '<div class="error">' + data + '</div>';

    }
});

}

表单非常简单,只有一个文件输入组件和一个简单的按钮,用于调用JavaScript和Dojo。
我在我的应用程序中有非常相似的代码,上传word/pdf文档,这不会出错,但由于某种原因,这会出错。
任何想法或指针,我应该尝试让这个工作没有错误?
哦,我正在使用php和Zend框架的后端,如果这有任何关系,但我怀疑它,因为它甚至没有击中服务器之前,它失败了。
非常感谢,
格兰特

0tdrvxhp

0tdrvxhp1#

此错误的另一个常见原因是服务器没有正确打包数据。这意味着即使您已将“handleAs:json”你必须把json封装在一些html中发送出去。它应该看起来像这样:

<html>
    <body>
        <textarea>
            { payload: "my json payload here" }
        </textarea>
    </body>
</html>

您的错误是无法在您从服务器返回的文件中找到文本区域。有关详细信息,请查看http://docs.dojocampus.org/dojo/io/iframe

mnemlml8

mnemlml82#

因为dojo.io.iframe.send()的加载处理器已经被触发了,所以请求应该已经发送到服务器并且有响应了,我认为服务器的响应不正确,可能是服务器返回了一个错误页面。
使用Firebug检查当前页面的DOM,找到Dojo创建的传输iframe并检查其内容。Firebug也可以捕获iframe I/O,请检查其Net选项卡。您可能会找到此问题的根本原因。

46scxncf

46scxncf3#

您是否遵守了doc中写入的约束?

**重要:**对于除html和xml之外的所有值,服务器响应应该是具有textarea元素的HTML文件。响应数据应该在textarea元素内。使用HTML文档是此传输可以知道响应何时加载的唯一可靠的跨浏览器方式。对于text/html(或XML)mimetype,只需返回普通的HTML/XML文档。换句话说,JSON和Text格式的服务应该返回 Package 如下的数据:

相关问题