Javascript 在使用jquery上传文件后解析JSON响应

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

我已经编写了一个使用jquery将文件上传到服务器的小脚本。文件上传成功,调用done:事件时没有问题,但我在处理答案时遇到了问题。这是我的剧本:

    <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'); });

  • 答案是以下格式的JSON文档:{“e”:0},其中“e”是错误代码。“e”可以返回许多不同的值,我希望能够找到真正的响应,而不是总是假设0


  • 有什么想法吗?

    我已经解决了。我对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},但没有成功。它应该有什么结构?