Javascript Dojo上传程序HTML5插件与iFrame插件

Javascript Dojo上传程序HTML5插件与iFrame插件,javascript,html,dojo,Javascript,Html,Dojo,我正在考虑在Dojo1.7.5中使用dojox/form/Uploader 我希望在现代浏览器中不使用Flash就可以进行多个文件上传,如果IE不支持,它可以只进行一次上传。从文档()中可以看出,如果您需要iFrame插件,它将为IE使用iFrame,为其他浏览器使用HTML5插件 情况似乎是这样。然而,问题是iFrame需要来自服务器的JSON响应,该响应被包装在textareahtml标记中。这些标记导致HTML5插件在这个.onComplete(JSON.parse(xhr.respons

我正在考虑在Dojo1.7.5中使用dojox/form/Uploader

我希望在现代浏览器中不使用Flash就可以进行多个文件上传,如果IE不支持,它可以只进行一次上传。从文档()中可以看出,如果您需要iFrame插件,它将为IE使用iFrame,为其他浏览器使用HTML5插件

情况似乎是这样。然而,问题是iFrame需要来自服务器的JSON响应,该响应被包装在textareahtml标记中。这些标记导致HTML5插件在这个.onComplete(JSON.parse(xhr.responseText.replace(/^{}&&/,'')上的第168行失败; 因为responsetext不是有效的JSON


为什么会出现这种看似不兼容的情况?有没有什么方法可以在不编写自己的插件的情况下获得我想要的行为?

如果您仍然需要解决方案,我有一个

您必须这样发送消息:

Dim msg = "<textarea>'{" + Chr(34) + "name" + Chr(34) + ":" + Chr(34) + fileName + Chr(34) + "," + Chr(34) + "file" + Chr(34) + ":" + Chr(34) + returnData.Item1 + Chr(34) + "," + Chr(34) + "type" + Chr(34) + ":" + Chr(34) +   returnData.Item3 + Chr(34) + "}'</textarea>"
Dim response = Request.CreateResponse(Of String)(HttpStatusCode.Created, msg)
response.Content.Headers.ContentType = New MediaTypeHeaderValue("text/html")
Return response
在函数“HandlerResponse”中:

这不是一个好的解决方案,但我找不到另一个,我也因此发了一篇帖子:

我自己解决了这个问题,以下是服务器端解决方案:

json = System.Web.HttpUtility.HtmlEncode(json)
Dim msg = "<textarea>" + json + "</textarea>"
json=System.Web.HttpUtility.HtmlEncode(json)
Dim msg=”“+json+“”
dojo文件上传程序现在可以正确解析响应

// 'json' and 'javascript' and 'text'
response.text = doc.getElementsByTagName('textarea')[0].value; // text
response.text = eval(replaceAll(response.text, "\\", ""));
json = System.Web.HttpUtility.HtmlEncode(json)
Dim msg = "<textarea>" + json + "</textarea>"