我有一个图片上传功能,可以使用以下图像上传表单:
iframe(url, {
form: dom.byId("myform"),
handleAs: "json",
timeout: 5000,
method: "POST"
}).then(function () {
console.log("Success");
}, function (Err) {
console.log(Err);
});
在服务器端,我得到图像,但在客户端,我得到TypeError:无法读取属性' value' ofundefined↵在I [as handleResponse](http://ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo/request/iframe.js:9:114)↵在r(http://ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo/dojo.js:206:81)"。我没有退货价值!我没有得到导致错误的原因! 请帮忙!
答案 0 :(得分:4)
来自 Dojo Reference Guide :
重要提示:如果您的有效负载不是html或xml(例如文本, JSON ),则服务器响应需要包含内容 在
<textarea>
标记中。这是因为这是唯一的跨浏览器 此提供程序知道内容何时成功的方式 加载。因此,服务器响应应如下所示:
<html>
<body>
<textarea>
payload
</textarea>
</body>
</html>
要解决此问题,您需要做的就是将JSON响应包装在<textarea>
标记中。原因是iframe.js
,从第300行开始:
if(handleAs === 'xml'){
...
}else{
// 'json' and 'javascript' and 'text'
response.text = doc.getElementsByTagName('textarea')[0].value; // text
}
因此,您可以在此处获得错误,内容为“无法读取undefined
的属性'值'。” Dojo在您的响应中找不到<textarea>
元素,因此doc.getElementsByTagName('textarea')
返回一个空数组。空数组的第0个元素[]
为undefined
,并且取消引用它将引发此错误。