1

我已经加载了一个表格。在表单中有一个选择区域,当更改时调用 ajax 查询来加载和显示第二级选择区域

$('.subjectareaid').change (function ()
     {
      var selected = $(this);
      var ssindex = selected.closest("tr").index()+1;
      var putid = '#subsub'+ssindex;
      var pdata = 'subjectareaid='+selected.val();
      $.ajax({
         type   : "POST",
         cache  : false,
         url    : "a_subsubject.php",
         data   : pdata,
         success: function(data) {
          $(putid).html(data);
          $(putid).removeClass('hideme');
         }
      });
     });

a_subsubject.php 文件创建要返回的选项列表

 <option value=".$row['subsubjectid']."> ".$row['subsubjectname']

修改的 HTML 是一个表格,表格中是行。该行看起来像:

$outline .= "<tr><td>".$oline."Question ".$k."</td><td valign=bottom><select name=dif[".$j."]>".$difsel."</select></td><td valign=bottom><select class=subjectareaid name=sub[".$j."]>".$subsel."</select></td><td valign=bottom><select class=hideme id=subsub".$j." value=subsub[".$j."]><option value=0></select></td></tr>";

其中 $oline 是空白或部分名称,$k 是问题编号,$j 是索引 (1-54),$difsel 是选择语句的选项,$subsel 是选择语句选项,并且设置了第三个选择到一个选项,并用 hideme 类隐藏。此外,它还有一个 ID,允许它使用 a_subsubject.php ajax 调用返回的选项重新填充 HTML。

所有这张表都包裹在一个表格中

 <form id=deform1>

提交表单后,将运行以下 jquery:

     var formser =  $('#deform1').serialize();
     var crud = "&crud=scd";
     var scorecardid = '&scorecardid='+ escape($('input[name=id]').val());
     var pdata = formser+'&action=cru'+crud+scorecardid;

然后将其发送到 ajax 例程,其中 pdata 是传递给 CRUD 程序以更新数据库的数据。

在问题 1、21 和 39 的所有三个选择值中进行选择的结果(从警报中显示)是: {id=1 是接收代码忽略的隐藏字段,因为它被捕获并作为 scorecardid 发送稍后在帖子字符串中}

id=1&dif%5B1%5D=0&sub%5B1%5D=2&dif%5B2%5D=0&sub%5B2%5D=0&dif%5B3%5D=0&sub%5B3%5D=0&dif%5B4%5D=0&sub%5B4%5D= 0&dif%5B5%5D=0&sub%5B5%5D=0&dif%5B6%5D=0&sub%5B6%5D=0&dif%5B7%5D=0&sub%5B7%5D=0&dif%5B8%5D=0&sub%5B8%5D=0&dif% 5B9%5D=0&sub%5B9%5D=0&dif%5B10%5D=0&sub%5B10%5D=0&dif%5B11%5D=0&sub%5B11%5D=0&dif%5B12%5D=0&sub%5B12%5D=0&dif%5B13% 5D=0&sub%5B13%5D=0&dif%5B14%5D=0&sub%5B14%5D=0&dif%5B15%5D=0&sub%5B15%5D=0&dif%5B16%5D=0&sub%5B16%5D=0&dif%5B17%5D= 0&sub%5B17%5D=0&dif%5B18%5D=0&sub%5B18%5D=0&dif%5B19%5D=0&sub%5B19%5D=0&dif%5B20%5D=0&sub%5B20%5D=0&dif%5B21%5D=3&sub% 5B21%5D=4&dif%5B22%5D=0&sub%5B22%5D=0&dif%5B23%5D=0&sub%5B23%5D=0&dif%5B24%5D=0&sub%5B24%5D=0&dif%5B25%5D=0&sub%5B25%5D=0&dif%5B26%5D=0&sub%5B26%5D=0&dif%5B27%5D=0&sub%5B27%5D=0&dif%5B28%5D=0&sub%5B28%5D=0&dif% 5B29%5D=0&sub%5B29%5D=0&dif%5B30%5D=0&sub%5B30%5D=0&dif%5B31%5D=0&sub%5B31%5D=0&dif%5B32%5D=0&sub%5B32%5D=0&dif%5B33% 5D=0&sub%5B33%5D=0&dif%5B34%5D=0&sub%5B34%5D=0&dif%5B35%5D=0&sub%5B35%5D=0&dif%5B36%5D=0&sub%5B36%5D=0&dif%5B37%5D= 0&sub%5B37%5D=0&dif%5B38%5D=0&sub%5B38%5D=0&dif%5B39%5D=2&sub%5B39%5D=3&dif%5B40%5D=0&sub%5B40%5D=0&dif%5B41%5D=0&sub% 5B41%5D=0&dif%5B42%5D=0&sub%5B42%5D=0&dif%5B43%5D=0&sub%5B43%5D=0&dif%5B44%5D=0&sub%5B44%5D=0&dif%5B45%5D=0&sub%5B45% 5D=0&dif%5B46%5D=0&sub%5B46%5D=0&dif%5B47%5D=0&sub%5B47%5D=0&dif%5B48%5D=0&sub%5B48%5D=0&dif%5B49%5D=0&sub%5B49%5D=0&dif%5B50%5D=0&sub%5B50%5D=0&dif%5B51%5D=0&sub%5B51%5D=0&dif%5B52%5D=0&sub% 5B52%5D=0&dif%5B53%5D=0&sub%5B53%5D=0&dif%5B54%5D=0&sub%5B54%5D=0&action=cru&crud=scd&scorecardid=1

如您所见, dif%5B1%5D=0&sub%5B1%5D=2&dif%5B2%5D=0&sub%5B2%5D=0 这表明 sub[1] 已设置为 2。这导致 subsub1 加载了一组选择选项,然后显示。进行了选择选项(第二项),但表单数据的序列化没有捕获 subsub[1]。[这也与记录 21 和记录 39 一起完成]。

在进行序列化以捕获第三个 jquery 添加的选择值之前,我是否缺少某种“更新”表单的方法?

4

1 回答 1

0

好的,代码在一个文件中是 300 行,在另一个文件中是 400 行...

 $outline .= "<tr><td>".$oline."Question ".$k."</td><td valign=bottom><select name=dif[".$j."]>".$difsel."</select></td><td valign=bottom><select class=subjectareaid name=sub[".$j."]>".$subsel."</select></td><td valign=bottom><select class=hideme id=subsub".$j." value=subsub[".$j."]><option value=0></select></td></tr>";

看起来不错,但是这一行代码中有一个错误。

<td valign=bottom><select class=hideme id=subsub".$j." value=subsub[".$j."]><option value=0></select>

select 语句没有“值”,它们有“名称”。

25 小时的时间浪费在追踪一行糟糕的 HTML 上。好吧,我觉得很傻。很难相信我在 1997 年为 Prentice Hall 写了一本关于 CGI 编程的血腥书。我很高兴我现在使用匿名句柄而不是我自己的名字。:-)

于 2013-09-12T08:25:31.097 回答