У меня есть сценарий, который генерирует панель формы:
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.')
}
});
}
}]
});
те же самые сценарии затем получают json файл с моего сервера, который определяет, сколько полей ввода, которые должна содержать форма. Сценарий затем добавляет те поля к форме:
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;
}
});
Наконец, форма добавляется к соответствующей панели в моем интерфейсе:
panel.add(form);
panel.doLayout();
Проблема, которую я имею: когда я отправляю форму путем нажатия на кнопку, запрос HTTP, отправленный на мой сервер, не содержит поля, добавленные к форме. Другими словами, я не отправляю те поля на сервер.
Кто-либо знает, почему и как я мог зафиксировать это?
Ваша проблема здесь:
id: 'form-exploit-zombie-'+zombie_ip,
formId: 'form-exploit-zombie-'+zombie_ip,
вы делаете то, что устанавливаете для атрибута id панели формы и атрибута id формы (тега формы) одно и то же значение. Это означает, что у вас есть два элемента с одинаковым идентификатором, и это неверно.
Просто удалите эту строку
formId: 'form-exploit-zombie-'+zombie_ip,
, и все будет в порядке.
Проверяли ли вы параметр HTTP Request для значений формы?
Если вы работаете на стороне сервера на PHP, что вы получаете в ответ, передавая любое имя поля? Например, если имя одного из вводимых полей было "xyz", что вы получите в ответ на
$_POST[ 'txt_xyz' ]