ajaxFileUpload上傳檔案成功後卻無法解析伺服器返回的json資料

來源:互聯網
上載者:User

標籤:建立   UI   方法   伺服器   檔案   上傳檔案   frame   無法   pos   

  • ajaxFileUpload是一款很好用的檔案上傳外掛程式,網上也有很多關於它的版本,但在上傳檔案成功後想返回json資料給前台時,卻會出現無法解析json資料的情況。

  仔細調試發現其實在向伺服器提交資料後,是進入了success回呼函數的,只是沒有解析到json資料。那就說明伺服器做出了響應的,進入了success方法的,唯一的問題就是前台接受的資料不是json格式的。

 使用console.log輸出data發現並不是純粹的json資料,其中頭部多了<pre style="word-wrap: break-word; white-space: pre-wrap;">{"JsonKey":"JsonValue"}</pre>

 找到問題就很好處理了,雖然設定了data-type參數是json類型的,但依然出現了這個bug,再看一下源碼就豁然開朗了

  =====這裡是源碼的內容==========

if ( type == &quot;json&quot; ) {
eval( &quot;data = &quot; + data);
}
=======================================
原來返回的json資料是通過eval產生的,意思是接受的資料一直是text類型的,只是根據data-type的參數再轉化,這是因為ajaxFileUpload是通過建立iframe層非同步來上傳檔案的

根據這個原理可以有2種解決辦法
1:在前台將<pre style="word-wrap: break-word; white-space: pre-wrap;">{"JsonKey":"JsonValue"}</pre>過濾,這樣就是乾淨的json資料
var reg = /<pre.+?>(.+)<\/pre>/g;  var result = data.match(reg);  data = RegExp.$1;
2:將源碼裡的eval裡的參數直接過濾
 if ( type == "json" ){
            data = jQuery.parseJSON(jQuery(data).text());
        }
再或者讓伺服器返回text類型的data再轉化成json資料
 

ajaxFileUpload上傳檔案成功後卻無法解析伺服器返回的json資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.