ExtJS 5 - Download-Datei von POST-servlet-Anfrage

Habe ich versucht zu implementieren, die export-Funktionalität in ExtJS 5 die Verwendung von Formular-submit-Methode. Und ich hatte Blick auf den folgenden stackoverflow-link, es hilft aber nicht vollständig.

Extjs 4 (mit einem code für 3.4 unten) herunterladen einer Datei zurück von einer post-Anforderung

In meinem Fall habe ich vor einem Problem nach dem Anfrage-Antwort erfolgreich ist, immer ungültige JSON-encoding-Fehler.Auch habe ich versucht, die Leser, die aus JSON-reader, um einige der anderen string-reader(siehe link), aber es ist ziemlich erfolgreich aus irgendeinem Grund.

http://www.sencha.com/forum/showthread.php?86704-handling-xml-response-on-form-submit

- Code:-

  var form = Ext.create('Ext.form.Panel',{
    timeout: 60000
  });
  var basicForm = form.getForm();
  basicForm.errorReader= new String();
    basicForm.submit({
        url     :  GRID_EXPORT_URL,
        method  : 'POST',
        headers : {
            "USER": user,
            "SERVERSESSIONID": serverSessionId,
            "Content-Type":"application/x-www-form-urlencoded"
        },  
        params  : {
            gridId:"dummyGrid",
            colDescs:"col1,Name"
        },              
        scope   : this,
        success : function(responseText){              
        },
        target: '_blank' 
    });  

Fehlermeldung:-

   [E] Ext.JSON.decode(): You're trying to decode an invalid JSON String: Code

Ausgabe Antwort vom Java-servlet(CSV):-

    Id,Name
    13092,Thiru
    12767,Arasu
    117,Vinod

Ich denke, weil dieses encoding Problem,auch nach der Anforderung gibt 200 Erfolg-status; der browser ein download-Fenster wird nicht immer bis poped! Sie Hilfe ist sehr willkommen, vielen Dank im Voraus!

Habe ich veränderte den code so etwas wie unten, aber immer noch den browser-download nicht geschieht, Ereignis, obwohl es nicht die Antwort ist 200.

Geänderten code mit Iframe/Form:-

onClickExport : function(){
    var body = Ext.getBody();
    var downloadFrame = body.createChild({
         tag: 'iframe',
         cls: 'x-hidden',
         id: 'app-upload-frame',
         name: 'uploadframe'
     });      
    var downloadForm = body.createChild({
         tag: 'form',
         cls: 'x-hidden',
         id: 'app-upload-form',
         target: 'app-upload-frame'
     });        
    Ext.Ajax.request ({
      url     : EXPORT_URL,
      method  : 'POST',
      form    : downloadForm,       
      timeout : 30 * 60 * 1000, //30 Minutes should be OK.
      scope   : this,
      headers : {
            "USER": user,
            "SERVERSESSIONID": serverSessionId,
            "Content-Type":"application/x-www-form-urlencoded"
      },  
      params  : {
            gridId:"dummyGrid",
            colDescs:"col1,Name"
      }, 
      success : function (r) {
        alert("Success");
      },
      failure: function(r) {
        alert('error');
      }
    }); 

Hinweis: ich bin mit Google Chrome browser!

Dank!

  • Hat deine Java-servlet-Rückkehr der Datei richtig, wenn Sie versuchen, mit einem anderen client ? (wie Advanced REST Client für Chrome)
  • Ja ja, es ist Francis!
  • Einen Blick: sencha.com/forum/... ich denke, du brauchst einen IFRAME.
  • Ich versuchte, fügen Sie ein iframe/form, aber immer noch das browser-popup ist nicht passiert. Geändert und Hinzugefügt den gleichen code oben!
  • Kann mir hier jemand helfen um dieses Problem zu beheben, bitte?
  • Die Tatsache, dass Sie dieses JSON decode error, ohne Ihren Hundeführer auch versuchen, mir sagt man kann ein überschreiben irgendwo. Debug-Handler, um zu sehen, Wann der Fehler passiert genau das.

Schreibe einen Kommentar