当尝试使用dojo.io.iframe上传图像文件<2MB时,今天遇到了一个有趣的问题.
我调用了处理表单的函数,但在将表单发布到服务器之前,我收到以下错误:
TypeError:ifd.getElementsByTagName("textarea")[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>';
}
});
}
Run Code Online (Sandbox Code Playgroud)
表单是非常基本的,只有一个文件输入组件和一个调用这个javascript和dojo的简单按钮.
我的应用程序中有非常类似的代码,上传word/pdf文档并且没有错误,但出于某种原因,这样做.
关于我应该尝试让它无误地工作的任何想法或指示?
哦,我正在使用php和Zend框架作为后端,如果它与它有任何关系,但我怀疑它,因为它甚至没有在它失败之前击中服务器.
非常感谢,
格兰特
由于负载处理程序dojo.io.iframe.send()已被触发,因此请求应该已发送到服务器并且响应返回。我认为服务器的响应不正确。也许服务器返回一个错误页面。
使用 Firebug 检查当前页面的 DOM,找到 Dojo 创建的传输 iframe 并检查其内容。Firebug 也可以捕获 iframe I/O,请检查其 Net 选项卡。您可能会找到此问题的根本原因。
| 归档时间: |
|
| 查看次数: |
9786 次 |
| 最近记录: |