使用来自ajax调用失败的新值更新元素

时间:2013-09-04 19:42:15

标签: jquery ajax json

我认为我在某处有语法问题 我成功地进行了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” - 被点击的按钮?

感谢。

2 个答案:

答案 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,因为它是一个通用选择器。