问题:
在使用ajaxfileupload上传文件的时候,文件上传成功了,但是返回的json数据并不是json格式
分析:
查看ajaxfileupload源代码发现,其实ajaxfileupload其实使用iframe+form的方式实现异步上传文件的,如下:////穿件form表单函数createUploadForm: function (id, fileElementId, data) {//create formvar formId = ‘jUploadForm’ + id;var fileId = ‘jUploadFile’ + id;var form = jQuery(‘<form action=”” method=”POST” name=”‘ + formId + ‘” id=”‘ + formId + ‘” enctype=”multipart/form-data”></form>’);//上传调用接口ajaxFileUpload: function (s) {// TODO introduce global settings, allowing the client to modify them for all requests, not only timeouts = jQuery.extend({}, jQuery.ajaxSettings, s);var id = s.fileElementId;var form = jQuery.createUploadForm(id, s.fileElementId, s.data); //创建form表单var io = jQuery.createUploadIframe(id, s.secureuri);//创建Iframe知道了上传流程,明白了问题出现在哪里了,是用Iframe的时候,返回的时候会添加上html和body标签。jquery不能直接解析的话,只能自己解析了。
解决方法:
ajaxfileupload调用的时候dataType不用设置,使用默认text/html.返回的数据作处理:
var str = $(data).find(“body”).text();//获取返回的字符串
var json = $.parseJSON(str);//把字符串转化为json对象
来源:http://www.cnblogs.com/losedo/p/4235674.html