form submit 如何提交js文件里的变量

我的一个jsp页面 有几个input 还有个extjs树带checkbox的(js文件里的) 现在想用form submit提交input 和树的节点 改怎么提交啊 节点信息已经放到check里面了 如何把check提交到action (struts2) 给个完整点的答案 谢谢了
[code="java"]
var check = [];
Ext.onReady(function() {
Ext.BLANK_IMAGE_URL = "/dtjcsy/pages/js/ext/resources/images/default/s.gif";
var Tree= Ext.tree;
var loader = new Ext.tree.TreeLoader;

var tree = new Tree.TreePanel({
    el:'tree-div',
    autoScroll:true,
    animate:true,
    enableDD:true,
    frame:false,
    border:false,
    useArrows:true,
    checkModel:'cascade',
    onlyLeafCheckable:false,
    rootVisible:true,
    bodyStyle:'background-color:#b4d5f5',
    containerScroll: true,
    listeners:{
        checkchange:function(node,checked){
        if(checked){
            var id = node.attributes.id;
            check.push(id);
        }
        }
    },
    loader: new Tree.TreeLoader({
        dataUrl:'rightAction.action',
        baseParams:{roleId:1},
        baseAttrs: { uiProvider: Ext.ux.TreeCheckNodeUI }
    })
});

var root =new Tree.AsyncTreeNode({
    text:"可用权限列表",
    draggable:false,
    id:'0'
});

tree.setRootNode(root);
tree.render();
root.expand();

});

[/code]

[code="java"]
/*!

Ext.onReady(function(){
var form = Ext.get('example-form');//你要赋值的form

var tree = new Ext.tree.TreePanel({
    renderTo:'tree-div',
    title: 'My Task List',
    height: 300,
    width: 400,
    useArrows:true,
    autoScroll:true,
    animate:true,
    enableDD:true,
    containerScroll: true,
    rootVisible: false,
    frame: true,
    root: {
        nodeType: 'async'
    },

    // auto create TreeLoader
    loader : new Ext.tree.TreeLoader({  
        dataUrl:'check-nodes.json',
        requestMethod : 'GET'
    }),
    listeners: {
        'checkchange': function(node, checked){
            var id = node.attributes.id;
            if(checked){
                Ext.DomHelper.append('example-form' , {tag: 'input', name: 'id', type : 'hidden' , value: id});
            }else{
                var inputs = Ext.DomQuery.jsSelect('input[value=' + id + ']' , 'example-form');
                for(var i = 0 , len = inputs.length ; i < len ; i++) {
                    form.dom.removeChild(inputs[i]);
                } 
            }
        }
    },

    buttons: [{
        text: 'Get Completed Tasks',
        handler: function(){
            var msg = '', selNodes = tree.getChecked();
            Ext.each(selNodes, function(node){
                if(msg.length > 0){
                    msg += ', ';
                }
                msg += node.text;
            });
            Ext.Msg.show({
                title: 'Completed Tasks', 
                msg: msg.length > 0 ? msg : 'None',
                icon: Ext.Msg.INFO,
                minWidth: 200,
                buttons: Ext.Msg.OK
            });
        }
    }]
});

tree.getRootNode().expand(true);

});
[/code]
这个是我把extjs提供的例子,check-tree.html做了一下改动写的,你看看,我测试过了可以的,页面上加了一个form。我不知道你check提供到服务器端使用什么参数名,所以这里都采用了name为id,你可以按需要更改。

[code="java"]
params:check ,
不行嗎?
action
直接简单点
request来取得params吧·
[/code]

form组件里面的input,通过submit直接提交是可以的,但tree里面的值需要你自己获取再提交。

在tree上增加监听:
[code="java"]

var check = [];
//...
listeners : {

checkchange : function(node , checked ) {

if (checked) {

var id = node.attributes.id;//也可以获取其他你需要的值

check.push(id);
}

}

}
//...
[/code]
这样你就可以获取到所有选中的值,然后再form的submit时,把这个值也作为参数一起提交到服务器端就可以了。

[code="java"]
myFormPanel.getForm().submit({
clientValidation: true,
url: 'updateConsignment.php',
params: {
newStatus: 'delivered',
check : check //你要提交的参数
},
success: function(form, action) {
Ext.Msg.alert('Success', action.result.msg);
}

});
[/code]
像这样,把之前的check值作为一个额外参数让form提交就好了。

[quote]
[code="java"]
url: 'updateConsignment.php',//这个是我FORM在的页面吗 还是什么?

newStatus: 'delivered',//这个是什么

[/code]
[/quote]
这个是我随便找的一个例子,演示一下。你说你的页面里有个form和tree嘛,那Tree组件获取你要的值,我前面说过了。那form,你肯定也是用组件了,Ext.form.FormPanel,上面就是个例子,url表示你要提交的form的地址,params里面设置你要提交的请求参数,名字你可以自己定的,我这里是一个例子而已。你可以看看Ext.form.BasicForm的API就知道了。

[quote]
我只用ext做了个树 别的全都不是ext的 form也不是
[/quote]
那也行啊,如果用普通的form表单,你直接用js在这个form下,把刚才获取的tree值,作为一个隐含的input增加进去就可以了,这样当你的form提交时,这些值也会被提交的啊。

[quote]
怎么把check放到input里
是写到js文件里面的吗 还是写到哪
[/quote]
这里只能用js啊!你可以把它放到点击tree的事件里面:
[code="java"]
//...

listeners : {

checkchange : function(node , checked ) {
var form = Ext.get('form-id);//这里使用form的ID

if (checked) {

var id = node.attributes.id;//也可以获取其他你需要的值

form.appendChild('');//加到form里面去
} else {//取消选择时,把form里面原来的input删除
var input = DomQuery.selectNode('input[value=' + id + ']',form.dom);

input && input.remove();
}

}

}

//...

[/code]
大致就是这个意思,代码我没有调试,你可以参考这个自己改改。

[quote]没有效果啊 [/quote]
我说了,我的代码只是表达这个意思,是否可以运行,还有结合你页面具体情况,基本意思就是这样了。你自己调试再改改就可以了。
没有“效果”,你要看看input是否添加到form里面去了,通过firebug可以查看的啊!我不知道你的页面结构,怎么能保证代码复制过去就可以了呢。自己要多动手,这样你才能提高啊!

[quote]
没有别的方法吧 extjs tree 里的变量 和form 一起提交吗? 这个我不会弄
[/quote]
我能想到的就这个方法了。你说不会弄,方法我已经告诉你了,把tree节点的值以input的方式动态加到form里面去,你是说js代码不会写吗?这个很基础的,那你要多多努力了。
你把你运行后的浏览器源代码发上来,我看看。