2016-08-02 4 views
-1

Ich habe diesen Code, um zwei Teile von Daten zu erhalten, erhalten diese beiden Ajax-Anfragen Daten von PHP-Klasse.Wie Informationen von einer Ajax Anfrage in eine andere

     { 
         xtype: 'button', 
         formBind: true, 
         id: 'saveLicenceBtn', 
         text: 'Save', 
         listeners: { 
          click: function (c) { 
           //first ajax request 
           var d = Ext.Ajax.request({ 
            url: 'system/index.php', 
            params: { 
             class: 'generatemultiple', 
             method: 'getSession' 
            }, 
            success: function (response) { 
             var object = Ext.decode(response.responseText, true); 
             console.log(object); 
            }, 
            failure: function (response) { 
             var object = Ext.decode(response.responseText, true); 
             console.log(object); 
            } 
           }); 
           //second ajax request 
           Ext.Ajax.request({ 
            url: 'system/index.php', 
            method: 'POST', 
            params: { 
             class: 'generatemultiple', 
             method: 'add', 
             data: Ext.encode({ 
              count: Ext.getCmp('count').getValue(), 
              start_date: Ext.getCmp('startdateTextField').getValue(), 
              end_date: Ext.getCmp('enddateTextField').getValue(), 
              duration: Ext.getCmp('durationTextField').getValue(), 
              expiry_date: Ext.getCmp('expirydateTextField').getValue(), 
              product_id: Ext.getCmp('productidTextField').getValue(), 
              company_id: Ext.getCmp('companyidtf').getValue(), 
              token: d 
             }) 
            }, 
            success: function (response) { 
             Ext.MessageBox.alert('Status', 'Success'); 
             Ext.getStore('LicenseStore').reload(); 
             Ext.getStore('LicenseAllStore').reload(); 
             Ext.getStore('LicenseFeaturesStore').reload(); 
             Ext.getStore('HardwareStore').reload(); 
             Ext.getStore('DropdownLicenseStore').reload(); 
             Ext.getStore('GridHardwareStore').reload(); 
             Ext.getStore('HardwareAllStore').reload(); 
             Ext.getCmp('addLicenseWindow').close(); 
            }, 
            failure: function (response) { 
             Ext.MessageBox.alert('Status', 'Failure'); 
             Ext.getCmp('addLicenseWindow').close(); 
            } 
           }); 
          } 
         } 
        } 

Der erste Ajax-Request wird ein Session-Variable von der Webseite und der zweite Ajax-Request sendet dieses Token mit der Ajax-Anfrage. Was ich wissen muss, ist, wie ich mache, was hier gezeigt wird, ohne diesen Fehler zu bekommen.

Uncaught RangeError: Maximum call stack size exceeded

Ich weiß, was die Fehlereinrichtung und ich bin mir der Grund, warum seine auftritt, aber ich kann nicht eine Lösung finden. es kommt immer wieder vor, weil ich zwei Funktionen habe, die sich gegenseitig aufrufen, also Fehler in der Webkonsole.

Was ich alternativ versucht, war diese

ONCLICK

click: function (c) { 
    Ext.Ajax.request({ 
     url: 'system/index.php', 
     method: 'POST', 
     params: { 
      class: 'generatemultiple', 
      method: 'add', 
      data: Ext.encode({ 
       count: Ext.getCmp('count').getValue(), 
       start_date: Ext.getCmp('startdateTextField').getValue(), 
       end_date: Ext.getCmp('enddateTextField').getValue(), 
       duration: Ext.getCmp('durationTextField').getValue(), 
       expiry_date: Ext.getCmp('expirydateTextField').getValue(), 
       product_id: Ext.getCmp('productidTextField').getValue(), 
       company_id: Ext.getCmp('companyidtf').getValue(), 
       token: '<?php echo $_SESSION["user_id"] ?>' 
      }) 
     }, 
     success: function (response) { 
      Ext.MessageBox.alert('Status', 'Success'); 
      Ext.getStore('LicenseStore').reload(); 
      Ext.getStore('LicenseAllStore').reload(); 
      Ext.getStore('LicenseFeaturesStore').reload(); 
      Ext.getStore('HardwareStore').reload(); 
      Ext.getStore('DropdownLicenseStore').reload(); 
      Ext.getStore('GridHardwareStore').reload(); 
      Ext.getStore('HardwareAllStore').reload(); 
      Ext.getCmp('addLicenseWindow').close(); 
     }, 
     failure: function (response) { 
      Ext.MessageBox.alert('Status', 'Failure'); 
      Ext.getCmp('addLicenseWindow').close(); 
     } 
    }); 
} 

den Einzug vergeben. Endziel dessen, was ich versuche, ist das Senden der Session-Variable von der PHP mit dieser Ajax-Anfrage

+0

Sie können die zweite Anfrage einfach in die 'success' Funktion des ersten verschachteln. –

+0

Ich tat das immer noch gab mir den Fehler oben –

+0

Bitte nicht den ganzen Code in der Frage einfügen. http://StackOverflow.com/Help/Mcve – blue112

Antwort

0

Sie können erste AJAX-Anfrage als ein synchroner Aufruf So dass zweite AJAX-Anfrage warten auf die erste AJAX-Anfrage abzuschließen. Setzen Sie in der ersten Anfrage async: false.

+0

Mmh das immer noch versucht Der gleiche Fehler wie zuvor, ich beginne zu denken, dass es etwas anderes sein könnte –