2010-05-21 48 views
5

Tôi đã có một kịch bản mà tạo ra một bảng điều khiển dạng:ExtJS - Tự động tạo ra các lĩnh vực trong FormPanel

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.') 
       } 
      }); 
     } 
    }] 
}); 

cùng kịch bản sau đó lấy ra một tệp json từ máy chủ của tôi trong đó xác định có bao nhiêu đầu vào các lĩnh vực hình thức mà nên chứa. Các kịch bản sau đó thêm các lĩnh vực này để có dạng:

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; 
    } 
}); 

Cuối cùng, hình thức được bổ sung vào bảng điều khiển thích hợp trong giao diện của tôi:

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

Vấn đề tôi có là: khi tôi gửi biểu mẫu bằng nhấp vào nút, yêu cầu http được gửi tới máy chủ của tôi không chứa các trường được thêm vào biểu mẫu. Nói cách khác, tôi không đăng các trường đó lên máy chủ.

Bất kỳ ai cũng biết tại sao và cách tôi có thể khắc phục điều đó?

Trả lời

9

Vấn đề của bạn là ở đây:

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

gì bạn đang làm là bạn đang thiết lập các thuộc tính id của bảng biểu mẫu và thuộc tính id của biểu mẫu (thẻ biểu mẫu) cho cùng một giá trị. Điều đó có nghĩa là bạn có hai phần tử có cùng id và đó là sai.

Chỉ cần loại bỏ dòng này

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

và bạn cần sử dụng tốt.

+0

tôi yêu bạn. cảm ơn. – Benjamin

+0

@Benjamin: Không sao cả. –

0

Bạn đã kiểm tra tham số Yêu cầu HTTP cho các giá trị biểu mẫu chưa?

Nếu phía máy chủ của bạn bằng PHP, bạn nhận được gì từ phản hồi bằng cách chuyển bất kỳ tên trường nào? Ví dụ, nếu một trong những tên đầu vào của bạn là "xyz" những gì bạn nhận được bằng

$_POST[ 'txt_xyz' ] 
+0

vâng tôi đã kiểm tra điều đó. – Benjamin

Các vấn đề liên quan