2013-06-26 134 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」.. –