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

G A*_*G A 1 javascript jquery

我用jquery编写了一个小脚本来将文件上传到服务器.文件上传成功,调用完成:事件没有问题,但我有问题要处理答案.这是我的脚本:

    <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>
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 变量数据似乎是空的,因为下面的循环甚至不会运行一次.

            $.each(data.result.files, function (index, file) {
                $('<p/>').text(file.name).appendTo('#files');
            });
    
    Run Code Online (Sandbox Code Playgroud)
  2. 答案是一个JSON文档,格式如下:{"e":0}其中"e"是错误代码."e"可以返回许多不同的值,我希望能够找到真正的响应而不是总是假设0.

任何的想法?

G A*_*G A 9

我已经解决了.我在java脚本中做了一个小改动,如下所示:

done: function (e, data) {
      $.each(data.files, function (index, file) {
          $('<p/>').text(file.name);
        });
      },
Run Code Online (Sandbox Code Playgroud)

我已经更改了服务器响应此格式的json:

{files:[{error:0,name:"thumb2.jpg",}]}