Javascript 在使用jquery上传文件后解析JSON响应
我已经编写了一个使用jquery将文件上传到服务器的小脚本。文件上传成功,调用done:事件时没有问题,但我在处理答案时遇到了问题。这是我的剧本:Javascript 在使用jquery上传文件后解析JSON响应,javascript,jquery,Javascript,Jquery,我已经编写了一个使用jquery将文件上传到服务器的小脚本。文件上传成功,调用done:事件时没有问题,但我在处理答案时遇到了问题。这是我的剧本: <input id="fileupload" type="file" name="carPicture" accept="image/*" multiple> <div id="progress"> <div class="bar" style="width: 0%;"></d
<input id="fileupload" type="file" name="carPicture" accept="image/*" multiple>
<div id="progress">
<div class="bar" style="width: 0%;"></div>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" type="text/javascript"></script>
<script src="@routes.Assets.at("javascripts/vendor/jquery.ui.widget.js")" type="text/javascript"></script>
<script src="@routes.Assets.at("javascripts/jquery.iframe-transport.js")" type="text/javascript"></script>
<script src="@routes.Assets.at("javascripts/jquery.fileupload.js")" type="text/javascript"></script>
<script>
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = "uploadCarPicture";
$('#fileupload').fileupload({
url: url,
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo('#files');
});
},
fail: function (e, data) {
alert("File exists");
},
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .bar').css(
'width',
progress + '%'
);
}
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
</script>
$(函数(){
"严格使用",;
//将此更改为服务器端上载处理程序的位置:
var url=“uploadCarPicture”;
$('#fileupload')。fileupload({
url:url,
数据类型:“json”,
完成:功能(e,数据){
$.each(data.result.files,函数(索引,文件){
$('').text(file.name).appendTo('#files');
});
},
失败:功能(e,数据){
警报(“文件存在”);
},
progressall:功能(e、数据){
var progress=parseInt(data.loaded/data.total*100,10);
$('#progress.bar').css(
“宽度”,
进度+“%”
);
}
}).prop('disabled',!$.support.fileInput)
.parent().addClass($.support.fileInput?未定义:“已禁用”);
});
我有两个问题:
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo('#files');
});
$。每个(data.result.files,函数(索引,文件){
$('').text(file.name).appendTo('#files');
});
有什么想法吗?我已经解决了。我对java脚本做了如下小改动:
done: function (e, data) {
$.each(data.files, function (index, file) {
$('<p/>').text(file.name);
});
},
done:函数(e,数据){
$.each(data.files,函数(索引,文件){
$('').text(file.name);
});
},
我已经更改了服务器响应此格式的json:
{
文件夹:
[
{
错误:0,
名称:“thumb2.jpg”,
}
]
}我已经解决了。我对java脚本做了如下小改动:
done: function (e, data) {
$.each(data.files, function (index, file) {
$('<p/>').text(file.name);
});
},
done:函数(e,数据){
$.each(data.files,函数(索引,文件){
$('').text(file.name);
});
},
我已经更改了服务器响应此格式的json:
{
文件夹:
[
{
错误:0,
名称:“thumb2.jpg”,
}
]
}您的控制台显示的实际响应是什么?听起来结果对象的格式与您期望的不一样。另外,您应该使用
$(数据)而不是$。each
。each
。如果响应是{“e”:0}
,则对象显然没有result
属性,因此,您不能迭代data.result.files
。解决第二个问题,然后第一个问题将自行解决。您在控制器函数中做什么,我们可以看一下吗?谢谢您的回答。服务器应该响应什么JSON?我尝试了{“结果”:0},但没有成功。它应该有什么结构?您的控制台显示的实际响应是什么?听起来结果对象的格式与您期望的不一样。另外,您应该使用$(数据)而不是$。each
。each
。如果响应是{“e”:0}
,则对象显然没有result
属性,因此,您不能迭代data.result.files
。解决第二个问题,然后第一个问题将自行解决。您在控制器函数中做什么,我们可以看一下吗?谢谢您的回答。服务器应该响应什么JSON?我尝试了{“结果”:0},但没有成功。它应该有什么结构?