0

每次更改选择框值时,我都需要通过 AJAX 传递表单变量,并从 AJAX 调用中获取返回的字符串以显示在页面上。情况如下:

我为一组合规性规则构建了一个由用户动态构建的表单。这允许用户有多个选择框来生成逻辑语句,如下所示:

(
  ( 6779 AND 10852 AND 10845 )
  AND 
  (
    ( 8260 AND 8258 ) 
  )
)
OR
( 6780 OR 10845 OR 8258 OR 12893 )

我编写了一个函数,在提交表单后将此逻辑语句作为字符串返回,但想在提交之前在表单页面上动态填充一个 div(#logicblock),以便用户可以在提交之前验证逻辑信息进入我们的数据库。

我尝试使用以下内容:

 ('##logicblock').load("#getmodel('model.compliance').BuildLogic(rc)#", function(response){
     $('##logicblock').html(response);
 })

...但这并没有正确地将 RC 范围传递到我的模型中。我已经搜索过,但找不到一种对我有意义的方法,可以将整个表单范围发送到一个返回值以在页面上显示的方法中。

4

1 回答 1

0

我想通了。因为表单字段是动态生成的,所以我发现无法使用$('select').change()事件调用方法,所以我写了一个handler方法来生成数据,并将表单序列化后传入handler。我能够使用以下内容来获得所需的响应:

function updateLogicBlock(){
    var serialform = $('form').serialize();
    $.get("#event.buildLink('handler.buildComplianceLogic')#?" + serialform, 
      function(data) {
        $('##logicblock').html(data);
    });
};

然后我简单地添加onChange="updateLogicBlock();"到表单上的每个选择框。

于 2017-03-29T20:21:33.483 回答