2010-10-07 51 views
4

我有一個J2EE Web應用程序,其中的表單將文件上載到服務器上的某個位置。在上傳期間,向用戶顯示waitMsg,一旦上傳完成,msgBox指示相同,該waitMsg應該消失。 js文件中還提供了成功案例的代碼。然而,上傳工作正常,但即使在服務器上傳完成後,waitMsg也會繼續。
JS代碼給出:
成功處理程序未使用extjs在文件上載中調用

Ext.onReady(function(){ 

    Ext.QuickTips.init(); 

    var msg = function(title, msg){ 
     Ext.Msg.show({ 
      title: title, 
      msg: msg, 
      minWidth: 200, 
      modal: true, 
      icon: Ext.Msg.INFO, 
      buttons: Ext.Msg.OK 
     }); 
    }; 

    var fp = new Ext.FormPanel({ 
     renderTo: 'fi-form', 
     fileUpload: true, 
     width: 500, 
     frame: true, 
     title: 'Upload XML Config File ', 
     autoHeight: true, 
     bodyStyle: 'padding: 10px 10px 0 10px;', 
     labelWidth: 50, 
     defaults: { 
      anchor: '95%', 
      allowBlank: false, 
      msgTarget: 'side' 
     }, 
     items: [{ 
      xtype: 'fileuploadfield', 
      id: 'form-file', 
      emptyText: 'Select the xml File to upload', 
      fieldLabel: 'File', 
      name: 'file', 
      buttonCfg: { 
       text: '', 
       iconCls: 'upload-icon' 
      } 
     }], 
     buttons: [{ 
      text: 'Upload', 
      handler: function(){ 
       if(fp.getForm().isValid()){ 
        fp.getForm().submit({ 
         url: 'uploadXML.htm', 
         waitMsg: 'Uploading your xml file...', 
         success: function(fp, o){ 
         msg('Success', 'Processed file "'+o.result.file+'" on the server'); 
         } 
        }); 
       } 
       if (!validateFileExtension(Ext.getDom('form-file').value)) { 
        Ext.MessageBox.alert('Select another file', 
        'Only XML file, please.'); 
        return; 
        } 
      } 
     },{ 
      text: 'Reset', 
      handler: function(){ 
       fp.getForm().reset(); 
      } 
     }] 
    }); 

    function validateFileExtension(fileName) { 
     var exp = /^.*\.(xml|XML)$/; 
     return exp.test(fileName); 
     } 

}); 

不知道我錯過了什麼。
在此先感謝。

回答

3

'uploadXML.htm'必須是PHP或類似的服務器端程序。這個PHP必須返回JSON字符串,例如:{'success':true}或{'success':false}。

+0

有效的JSON應該是:{「成功」:真正}或{「成功」:假} – Ithar 2017-03-23 15:02:13

10

也有類似的問題。發現您需要在處理文件上傳的頁面上將內容類型設置爲「text/html」。 :-(

Response.ContentType = "text/html"; 

如果read the documentation for Ext.data.Connection,你會看到

The server response is parsed by the browser to create the document for the IFRAME. If the server is using JSON to send the return object, then the Content-Type header must be set to "text/html" in order to tell the browser to insert the text unchanged into the document body.

我花了一段時間才能找到它,但我在你的問題就來了,別人可能會做類似的問題!

希望這將幫助他們

+1

這樣可以節省搜索的後幾乎每天我的生活。另外,如果沒有文件上傳,而只是一個空文件字段,內容類型應該設置爲'text/html'。 這也可能會修復「資源解釋爲文檔但用MIME類型application/json傳輸」的錯誤,因爲當您返回有效的JSON但ExtJS仍會拋出「Uncaught Ext.Error:您試圖解碼無效的JSON字符串」 。 – DavidKunz 2015-09-03 06:16:52

相關問題