将ajax成功回调设置为输入值

时间:2017-01-04 18:19:00

标签: javascript jquery ajax

我想将从AJAX请求中的成功回调返回的数据设置为输入值。这不起作用。我感觉这是因为我在(.on)事件函数中使用了AJAX请求。我需要在AJAX请求($ this)中使用事件函数来查找我想要更新的输入。

$(function () {
        $("table").on('change', '.master', function () {
            $.ajax({ type: "POST", async: false, url: '<?php echo site_url('wordsuggestion'); ?>/hoi/nederlands/frans', success: function(data) { 
                $(this).parents('tr').find(".slave").val(data);
            }});
        });
    });

这是我正在使用的形式。

<tr>
                <td>
                    <div class="form-group"><input type="text" class="master" name="or[0]"></div>
                </td>
                <td>&nbsp;</td>
                <td>
                    <div class="form-group"><input type="text" class="slave" name="tr[0]"></div>
                </td>
            </tr>

为什么这不起作用对我来说是一个谜。我认为在AJAX调用中,$(this)运算符不能再被使用,导致输入不被更新。

2 个答案:

答案 0 :(得分:2)

this没有提到你在AJAX回调中的想法。该回调的上下文超出了原始change事件处理程序的上下文,该处理程序已经完成。

您可以在$.ajax()调用中设置上下文,如下所示:

$.ajax({
    context: this,
    type: "POST",
    // etc...

甚至只需将值设置为变量并捕获该回调的变量:

var element = this;
$.ajax({
    success: function (data) {
        $(element).parents('tr')....
    },
    // etc...

答案 1 :(得分:1)

尝试

$(this).parents('tr').find(".slave").eq(0)