[英]Select <options> loaded by jquery not getting serialized
我已經加載了表格。 表單中有一個選擇區域,更改后將調用一個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是select語句的選項,$ subsel是select語句的選項,並且設置了第三個選擇到一個選項,並與hideme類一起隱藏。 另外,它還有一個ID,該ID允許HTML重新填充由a_subsubject.php ajax調用返回的選項。
該表全部包裝成表格
<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是一個隱藏字段,當它被捕獲並作為計分心發送時,接收代碼會忽略該隱藏字段稍后在帖子字符串中}
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%5 B37%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的select值之前,我是否缺少某種“更新”表單的方式?
好的,代碼在一個文件中是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編程的血腥書。我很高興我使用了anon手柄,而現在沒有我自己的名字。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.