我正在使用here中的ajaxupload.js
,我看到正在上传的文件正常工作。但我在回复中得到<pre style="word-wrap: break-word; white-space: pre-wrap;">{"id":"006","path":"006.png"}</pre>
。
我认为答案应该只是{"id":"006","path":"006.png"}
但由于某些原因,它会被<pre>
包围,因此Uncaught SyntaxError: Unexpected token <
。
我正在使用spring mvc 3,tomcat。我使用java.io.Writer
将回复写为writer.write(json.toString());
有人可以帮我理解这个错误以及如何解决它吗?
感谢。
更新:
CODE :
<form id="app-form" class="cols" action="#" method="POST">
<fieldset class="w50">
<!-- set of form fields -->
</fieldset>
<fieldset class="w50">
<button id="uploadButton" class="csbutton-grey" >Upload</button>
<ul id="locationImages"></ul>
</fieldset>
<div style="float: left;">
<button type="submit" class="cool-button">Submit</button>
</div>
</form>
$(document).ready(function(){
var button = $('#uploadButton'), interval;
new AjaxUpload(button, {
action: 'uploadImage',
name: 'qqfile',
responseType: "json",
onSubmit : function(file, ext){
this.disable();
console.log("file - " + file);
console.log("ext - " + ext);
if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){
alert('Error: invalid file extension');
return false;
}
else {
$.ajax({
type:"GET",
url:"file",
data:'file='+file,
success:function(data, textStatus, jqXHR){
console.log(jqXHR.status);
console.log(data);
},
error:function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR.status);
},
});
}
},
onComplete: function(file, response){
this.enable();
console.log("file - " + file);
console.log("response.id - " + response.id + ", response.path - " + response.path);
$('<li></li>').appendTo('#locationImages').text(file);
}
});
});
答案 0 :(得分:1)
如果要将JSON发送到客户端,请使用Jackson。 Spring MVC本身就支持它。像这样创建一个bean类:
public class Result{
private String id;
private String path;
public Result(String id, String path){
this.id=id;this.path=path;}
public Result(){}
// add getters and setters
}
现在像这样创建你的控制器方法
@ResponseBody // this is important
@RequestMapping("/path/to/mapping")
public Result someMethodName(SomeParameter param1, SomeParameter param2){
// do something here
return new Result(id, path);
}
只要你的类路径上有Jackson并且通过<mvc:annotation-config />
配置了你的Spring应用程序,这将自动序列化你的响应对象以纠正JSON(包括正确的mime类型)
答案 1 :(得分:1)
您是否在AjaxUpload中将responseType
属性设置为json
?