我想将从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> </td>
<td>
<div class="form-group"><input type="text" class="slave" name="tr[0]"></div>
</td>
</tr>
为什么这不起作用对我来说是一个谜。我认为在AJAX调用中,$(this)运算符不能再被使用,导致输入不被更新。
答案 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)