2013-06-26 66 views
2

这是我的代码,用于将文件上传到我的服务器。如何访问Json响应

$(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看到发送JSON。

这是一个上传文件的响应。

{"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”,现在我想响应文件的名称写在我的div(#phy_files),但它写'file.png',而不是

回答

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"); 
    }); 
} 
+0

它工作:)非常感谢你Reyaner。我真的很感激你的帮助:)花了一整天的时间....但我可以说最后它工作:)谢谢。 –

+0

没问题,先生! :) 只是为了解释,结果是一个字符串。所以你必须解析它到一个JSON对象...... selam! – reyaner

+0

谢谢你的解释。 :) –

0

所以如果你console.log数据,什么是在日志=?

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

谢谢reyaner 这里是我后,我CONSOLE.LOG 的http://截屏.com/t/DCGI7ThTkg –

+0

好的,你是从哪里得到的:{“files”:[{“name”:“2013-06-20_1235UQn5gm5SRUPzbA.png”....在你的文章中。 在你的照片中。 file.name是:2013-06-20_1235.png ... – reyaner

+0

是我上传的文件的名称为:2013-06-20_1235.png。但服务器脚本更改上传的文件名称,并在我们的回复中创建一个json,它是 - > {“files”:[{“name”:“2013-06-20_1235UQn5gm5SRUPzbA.png”.. –