如何访问Json Response

时间:2013-06-26 13:06:24

标签: php jquery json file-upload

以下是我将文件上传到服务器的代码。

$(function () {
$('#phy_fileupload').fileupload({
    autoUpload: true,
    add: function (e, data) {
        $('body').append('<p class="upl">Uploading...</p>')
        data.submit();
    },
    progressall: function (e, data) {
        var progress = parseInt(data.loaded / data.total * 100, 10);
        $('#phy_progress .bar').css(
            'width',
            progress + '%'
        );
    },
    done: function (e, data) {
        $.each(data.files, function (index, file) {
             $('.upl').remove();
                $('<p/>').text(file.name).appendTo("#phy_files");
        });
    }
});
});

这是HTML

<div id="phy_progress">
    <div class="bar" style="width: 0%;"></div>
</div>
                                                <input id="phy_fileupload" type="file" name="files[]" data-url="<?php echo site_url('admin/upload/'); ?>" multiple>

<div class="files" id="phy_files"></div>

效果很好,上传图片并发送响应,我可以在FIREBUG中看到。

以下是一个上传文件的回复。

{"files":[{"name":"2013-06-20_1235UQn5gm5SRUPzbA.png","size":29381,"url":"http:\/\/files\/2013-06-20_1235UQn5gm5SRUPzbA.png","thumbnail_url":"http:\/\/files\/thumbnail\/2013-06-20_1235UQn5gm5SRUPzbA.png","delete_url":"http:\/\/localhost\/mark\/?file=2013-06-20_1235UQn5gm5SRUPzbA.png","delete_type":"DELETE"}]}

现在的问题是它在div中添加了文件名(#phy_files)(即2013-06-20_1235.png),我怎么想添加上传到服务器的新文件名(即)2013-06-20_1235UQn5gm5SRUPzbA.png。现在我花了一整天的时间来尝试访问Json的这个响应,但显然要么我一直在寻找错误的结局,要么我完全迷失了,我到目前为止还不知道如何才能访问这个响应。

真的很感激任何帮助。如果您不理解我在这里写的内容,请告诉我,如果需要,我很乐意再次解释。谢谢。

简而言之:

问题是上传的文件命名为'file.png',在服务器上,其名称更改为'filexyzserdsdf.png',现在我希望将响应文件名写入my div( #phy_files),但它正在写'file.png'而不是

2 个答案:

答案 0 :(得分:1)

现在它变得清晰......好吧,你应该这样做:

done: function (e, data) {
    var res = jQuery.parseJSON(data.result);
    $.each(res.files, function (index, file) {
         $('.upl').remove();
            $('<p/>').text(file.name).appendTo("#phy_files");
    });
}

答案 1 :(得分:0)

所以,如果你是console.log数据,log =?

中的内容
done: function (e, data) {
console.log(data);
        $.each(data.files, function (index, file) {
             $('.upl').remove();
                $('<p/>').text(file.name).appendTo("#phy_files");
        });
    }