为什么我在解析数组后无法访问textarea id

时间:2016-01-15 21:41:27

标签: php jquery html

我在页面上加载多个客户端,每条记录都有自己的<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)

2 个答案:

答案 0 :(得分:1)

$('#clientid')选择ID为&#34; clientid&#34;的元素。

我认为你想通过连接&#34;#&#34;来动态构建选择器。带有变量值的符号:

 $('#'+clientid).html("hahaha");

以下示例:

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:1)

从以下位置更改选择器:

$('#clientid').html("hahaha");

$('#'+clientid).html("hahaha");

另外还有一个注意事项:不要将整数用作id,这是一个非常糟糕的主意,而且它并不能真正描述它是什么,是一个更好的选择可能是:clientInfo1clientInfo2 ..等或clientTextarea1clientTextarea2 ..等等