我在页面上加载多个客户端,每条记录都有自己的<textarea>
。我将每个<textarea>
设置为客户端的clientid。
if(isset($_POST['loaddata'])){
try{
$stmt = $db->prepare('SELECT clientid, fname, lname
FROM clients
WHERE memberid = :memberid
AND groupid = :groupid
ORDER BY lname');
$stmt->bindValue(':memberid', $_SESSION["memberid"], PDO::PARAM_INT);
$stmt->bindValue(':groupid', $_POST['groupid'], PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $row ) { $i++;
echo '<tr style="'.getbgc($i).'">
<td style="display:none">'.$row[0].'</td>
<td style="width:auto;">'.$row[1].'</td>
<td style="width:auto;">'.$row[2].'</td>
<td><textarea id='.$row[0].' class="form-control" rows="1"></textarea></td>
</tr>';
}
} ...
加载数据后,我测试<textarea> id's
:
$.ajax({
url : 'wsparticipation.php',
type : 'POST',
async : false,
data : {
'loaddata' : 1,
'groupid' : temp
},
success:function(re){
$('#showdata').html(re);
$('#13').html("I am 13");
$('#15').html("I am 15");
$('#10').html("I am 10");
} ...
和textareas
显示html。
当我准备保存输入的数据时,我将clientid's
设置为数组。
if(isset($_POST['getarray'])){
$stmt = $db->prepare('SELECT clientid
FROM clients
WHERE memberid = :memberid
AND groupid = :groupid
ORDER BY lname');
$stmt->bindValue(':memberid', $_SESSION["memberid"], PDO::PARAM_INT);
$stmt->bindValue(':groupid', $_POST['groupid'], PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll();
$ret = array();
foreach($result as $row ) {
$ret[] = $row['clientid'];
}
echo json_encode($ret);
exit();
}
$.ajax({
url : 'wsparticipation.php',
type : 'POST',
datatype : 'JSON',
data : {
'getarray' : 1,
'groupid' : temp
},
success:function(re){
data = $.parseJSON(re);
$.each(data, function(i, clientid) {
alert(clientid);
$('#clientid').html("hahaha");
});
$('#2').html("Made it here with this");
}
});
alert()
确实向我展示了每个clientid's
,但下一个声明$('#clientid').html("hahaha");
什么也没做。最后一个语句$('#2').html("Made it here with this");
将该文本放在适当的textarea
中。
因此,由于alerts
向我显示clientid's
,为什么我无法使用textarea
中的clientid
访问$.each(data, function(i, clientid)
?
答案 0 :(得分:1)
$('#clientid')
选择ID为&#34; clientid&#34;的元素。
我认为你想通过连接&#34;#&#34;来动态构建选择器。带有变量值的符号:
$('#'+clientid).html("hahaha");
以下示例:
var clientid = 2;
$('#' + clientid).html('test');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="2"></textarea>
&#13;
答案 1 :(得分:1)
从以下位置更改选择器:
$('#clientid').html("hahaha");
到
$('#'+clientid).html("hahaha");
另外还有一个注意事项:不要将整数用作id,这是一个非常糟糕的主意,而且它并不能真正描述它是什么,是一个更好的选择可能是:clientInfo1
,clientInfo2
..等或clientTextarea1
,clientTextarea2
..等等