我在ASP.Net表单应用中使用ajax-upload。
我需要发送一个字符串哈希值,一旦将其保存在服务器上,就会识别该文件。
我在发出json字符串的ashx处理程序中这样做,但无论我从服务器发送什么,在javascript中我得到一个空对象......我做错了什么?
这是ashx上的on load方法的片段 //已编辑 context.Response.ContentType =“application / json”; context.Response.ContentEncoding = System.Text.Encoding.UTF8; context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
ProcessFile(context.Response);
context.Response.Write("{\"success\": true, \"hash\": " + _myHash + "}");
这是完整的
onComplete: function(id, file, responseJSON) {
console.log(responseJSON);
}
答案 0 :(得分:1)
您是否阅读了包中包含的server / readme.txt?
你应该将json作为text / html
返回
答案 1 :(得分:1)
使用AjaxUpload函数的属性responseType。将其设置为“json”。
像这样:
new AjaxUpload("#importButton",{
action: "upload.html",
name: 'name',
responseType: "json",
allowedExtensions: ['xml'],
onSubmit : function(file, ext){
},
onComplete: function(file, response){
}
});
答案 2 :(得分:0)
这些是我在返回JSON数据时设置的标题:
context.Response.ContentType = "application/json";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
当它们不正确时,我看到各种浏览器的奇怪行为。如果更改这些没有帮助,我会尝试消除ajax帖子,以验证您是否正在发送正确的数据。
如果您正在使用jQuery,$.ajax()
方法也有一个noCache选项,您也可以进行调查。
答案 3 :(得分:0)
在我上传了上传者的代码后,我发现了问题,这件事发生在我身上,问题是响应的解析,所以,你必须在哈希上加上双引号,如下:
"{\"success\": true, \"hash\": \"" + _myHash + "\"}"
答案 4 :(得分:0)
这些是我必须对fileuploader.js文件所做的更改,以便它可以工作:
this.log("innerHTML = " + doc.body.innerHTML);
// replace <pre> tags from IE Frame
var content = doc.body.innerHTML.replace(/<pre>/gi, '').replace(/<\/pre>/gi, '');
try {
response = eval("(" + content + ")");
} catch(err){
response = {response: content};
我还改变了在JSON错误的情况下发出响应的方式:
var response = xhr.responseText;
try {
response = eval("(" + xhr.responseText + ")");
} catch(err){
// emit an object with the offending responseText
response = {responseText: response};
}