2010-05-21 21 views
5

ich ein Skript haben, das ein Formular Panel erzeugt:ExtJS - Dynamisch erzeugen Felder in einer Formpanel existieren

var form = new Ext.FormPanel({ 
    id: 'form-exploit-zombie-' + zombie_ip, 
    formId: 'form-exploit-zombie-' + zombie_ip, 
    border: false, 
    labelWidth: 75, 
    formBind: true, 
    defaultType: 'textfield', 
    url: '/ui/modules/exploit/new', 
    autoHeight: true, 
    buttons: [{ 
     text: 'Execute exploit', 
     handler: function() { 
      var form = Ext.getCmp('form-exploit-zombie-' + zombie_ip); 

      form.getForm().submit({ 
       waitMsg: 'Running exploit ...', 
       success: function() { 
        Ext.beef.msg('Yeh!', 'Exploit sent to the zombie.') 
       }, 
       failure: function() { 
        Ext.beef.msg('Ehhh!', 'An error occured while trying to send the exploit.') 
       } 
      }); 
     } 
    }] 
}); 

die gleichen Skripte dann eine JSON-Datei von meinem Server abruft, die eingegeben, wie viele definiert Felder, die Form sollte enthalten. Das Skript fügt dann diese Felder Form:

Ext.each(inputs, function(input) { 
    var input_name; 
    var input_type = 'TextField'; 
    var input_definition = new Array(); 

    if(typeof input == 'string') { 
     input_name = input; 
     var field = new Ext.form.TextField({ 
       id: 'form-zombie-'+zombie_ip+'-field-'+input_name, 
       fieldLabel: input_name, 
       name: 'txt_'+input_name, 
       width: 175, 
       allowBlank:false 
      }); 
     form.add(field); 
    } 
    else if(typeof input == 'object') { 
     //input_name = array_key(input); 

     for(definition in input) { 
      if(typeof definition == 'string') { 

      } 
     } 
    } else { 
     return; 
    } 
}); 

Schließlich wird die Form auf die entsprechende Platte in meiner Schnittstelle hinzugefügt:

panel.add(form); 
panel.doLayout(); 

Das Problem, das ich habe, ist: wenn ich das Formular durch Wenn Sie auf die Schaltfläche klicken, enthält die an meinen Server gesendete http-Anfrage keine Felder, die dem Formular hinzugefügt wurden. Mit anderen Worten, ich poste diese Felder nicht auf dem Server.

Wer weiß warum und wie könnte ich das beheben?

Antwort

9

Ihr Problem ist hier:

id: 'form-exploit-zombie-'+zombie_ip, 
formId: 'form-exploit-zombie-'+zombie_ip, 

was Sie tun, ist, dass Sie das id-Attribut setzen von das Formularfeld und das ID-Attribut des Formulars (Formular-Tag) auf denselben Wert. Was bedeutet, dass Sie zwei Elemente mit der gleichen ID haben und das ist falsch.

Entfernen Sie einfach diese Zeile

formId: 'form-exploit-zombie-'+zombie_ip, 

und Sie sollten in Ordnung sein.

+0

ich liebe dich. Vielen Dank. – Benjamin

+0

@ Benjamin: Kein Problem. –

0

Haben Sie den HTTP-Request-Parameter für die Formularwerte überprüft?

Wenn Sie Server-Seite in PHP ist, was erhalten Sie von der Antwort durch die Übergabe eines beliebigen Feldnamens? wenn einer Ihrer Eingabe Namen „xyz“, zum Beispiel, war das, was bekommt man von

$_POST[ 'txt_xyz' ] 
+0

ja ich habe das überprüft. – Benjamin