我必须在我的页面上动态添加一些文本输入,如下所示:
$table=""; $n=0;
$arrayform=array();
foreach($rslt as $rows){
$table=$table."
<div class='img-rounded row' style='margin-bottom:2%' >
<div class='col-lg-1'></div>
<div class='col-lg-4'>
<input id='cap-".$n."' type='text' class='form-control' value='".$rows['caption']."'>
</div>
<div class='col-lg-1' id='rightarrow'>
<img id='img-".$n."' src='img/right-arrow.png' width='45' height='30' alt=''/>
</div>
<div class='col-lg-4'>
<input id='val-".$n."' type='text' class='form-control' value='".$rows['value']."'>
</div>
<div class='col-lg-1'>
<input type='button' id='btn-".$n."' onClick='removeval(\"".$rows['caption']."\",\"".$rows['value']."\",\"".$_GET['id']."\",\"".$rows['id']."\")' class='btn btn-danger' value='Remove Column'>
</div>
</div>
<div id='divrslt-".$n."' class='row text-success' style='margin-left:10%; margin-bottom:2%'>
</div>
";
表单元素的id由$ n变量和其他字符串决定。
我编写了以下代码来构造输入文本值的参数列表,以便发送到javascript函数。
$arrayform[$rows['caption']]="cap-".$n.".value,val-".$n.".value, "; $n++;
}
使用以下代码,我使用在前一行中构造的数组作为updatechartval()javascript函数的参数。
$table=$table."
<div class='row' style='margin-left:4%'>
<button type='button' class='btn btn-success' onClick='updatechartval(".implode(" ",$arrayform)."\"".$_GET['id']."\")' value='update'>
Update
</button>
</div>
";
然后我回应说:
echo $table;
渲染的按钮代码为:
<button type="button" class="btn btn-success" onclick="updatechartval(cap-0.value,val-0.value, cap-1.value,val-1.value, cap-2.value,val-2.value, cap-3.value,val-3.value, "126")" value="update">
Update
但是当我运行代码时,元素的id被发送而不是文本输入的值。 我怎么能解决这个问题? 感谢...
答案 0 :(得分:0)
您正遭受与SQL注入攻击相当的javascript:
[..snip..] onclick="updatechartval(cap-0.value,val-0.value,[..snip..]
^^^^^^^^^^^
你需要在函数调用中引用你的参数,因为现在代码被解释/执行为:
updateCharval(unknown/undefined variable "cap" minus 0.value, ...
整数没有.value
属性,并且由于您尝试从未定义的变量中减去该未定义的值属性,因此您将获得一大堆内容面。
您的生成器功能应该更像:
$arrayform[$rows['caption']]="'cap-".$n.".value','val-".$n.".value' etc...
^----------------^ ^----------------^
请注意额外的报价。
答案 1 :(得分:0)
您需要从updatechartval(param1, param2)
函数获取输入值。现在你正试图在javascript标签之外运行javascript。
所以你最终得到这样的东西:
function updatechartval(a,b) {
valueA = document.getElementById(a).value;
valueB = document.getElementById(b).value;
}