我认为我在某处有语法问题 我成功地进行了ajax调用并获取了我想用作按钮值的新值。 我可以在控制台中看到正确的数据,但按钮的值永远不会改变。 这是代码:
$('.changestatus').live('click', function() {
var id = this.id;
console.log(this.id);
var parameters = {
rule_id: this.id,
rule_status: this.value,
viewtype:'json'
};
var url = myurl;
console.log(myurl);
$.getJSON(
url,
parameters,
function(data) {
console.log(data);
$(id).value = data; //this.value = data;
}
);//end getJSON.
});//end click.
你能告诉我哪里出错吗?在json调用的上下文中,是否仍然知道“this” - 被点击的按钮?
感谢。
答案 0 :(得分:1)
您应该在jquery对象上使用val()
而不是value
。
$('#' + id).val(data);
或
document.getElementById(id).value=data;
您也可以这样做,将this
上下文缓存到变量self
,并在成功回调中设置self.value=data
值。
$('.changestatus').live('click', function() {
var id = this.id;
var self = this; //<-- Here
console.log(this.id);
.....
$.getJSON(
url,
parameters,
function(data) {
...
self.value = data;
...
}
);//end getJSON.
});//end click.
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。
答案 1 :(得分:0)
假设其他一切都是正确的,你应该得到这样的id:
var id = $(this).attr('id');
从那里,您需要:
$('#' + id).val(data);
jQuery选择器使用哈希来表示它是一个ID,因为它是一个通用选择器。