咨询ajax - 显示值单元格表

时间:2015-01-03 16:51:25

标签: jquery ajax html-table cell

我想要输入的显示值" name"在我的表数据中。

<table id="mytable">
    <tbody>
        <tr>
            <td><input id="id" class="id">1</input></td>
            <td><input id="name" class="name"></input></td>
        <tr>
    <tbody>
    <tbody>
        <tr>
            <td><input id="id" class="id">2</input></td>
            <td><input id="name" class="name"></input></td>
        <tr>
    <tbody>
</table>

我使用此代码获取值,但我不知道如何显示它。

$('#mytable tbody').each(function() {

    var id = $(this).find(".id").val(); //obtain Id value

    $.ajax({
        url:"search_name.php", //search in database name with this id
        type:"POST",
        data:id,
        dataType:"json",
        success:
            function(return)
            {
                $(this).find(".name").val(return.name); 
            }               
    })

});

})

return.name的值是好的,它是我要显示的名称,但不是  出现在带有类名的输入中。

1 个答案:

答案 0 :(得分:0)

主要问题是this在ajax回调中有不同的上下文,而不是您期望从each循环中获得的元素实例

有几种方法可以解决this的范围问题。

最不常用的方法是context

$.ajax选项
$('#mytable tbody').each(function () {
    $.ajax({
        /* other options left out for brevity*/
        context: this, // per docs "object will be made the context of all Ajax-related callbacks"
        success: function (return) {
            /* "this" is now the tbody instance*/
            $(this).find(".name").val(return.name);
        }
    });
});

更常见的方法是在调用$.ajax

之前存储对元素的引用
$('#mytable tbody').each(function () {
    var $tbody = $(this); // store instance in variable
    $.ajax({
       /* other options */
        success: function (return) {
            $tbody.find(".name").val(return.name); 
        }
    });
});

关于范围

,第二种方法可能更容易阅读