2010-05-02 137 views
1

我在页面上有几个'select'元素。当我选择一些选项时,ajax请求将被发送到服务器,并且与此“选择”相邻的元素必须用响应值进行更新。我希望下面的代码是工作:jQuery成功:功能{}问题

$(".vars").live("change", function() { //selected something in <select> list 
    $.ajax({ 
     type: "POST", 
     url "someurl.php", 
     data: {somedata}, 
     success: function(html) { 
      $this.next().html(html); //this does not update .next() element. 
     } 
    }); 
}); 

如果我更换

$(this).next().html(html); 

alert(html); 

我可以看到Ajax请求成功。此外,只有在页面上只有一个“选择”时才起作用,否则会出现空的弹出窗口。

+0

为了回应您的评论,要获得/设置选择框的选定选项,请使用.val()而不是.html()。希望对你有所帮助 – BradBrening 2010-05-02 16:11:38

回答

1

我认为,“这”是不是你认为它是同时在回调引用。试试这个:

$(".vars").live("change", function() { //selected something in <select> list 
    var $driver = $(this); 
    $.ajax({ 
     type: "POST", 
     url "someurl.php", 
     data: {somedata}, 
     success: function(html) { 
      $driver.next().html(html); //this does not update .next() element. 
     } 
    }); 
}); 
+0

谢谢你们,但是如果有几个'select'元素,那么'html'的回应就会变成空白。无论如何,现在我们更接近解决方案,因为最终正确的元素被触发。 – ufw 2010-05-02 16:09:08

+0

但它看起来像服务器端代码中的一些错误,所以这个问题必须标记为“已回答”。 – ufw 2010-05-02 16:19:49

1
$(".vars").live("change", function() { //selected something in <select> list 
    var $this = $(this); 
    $.ajax({ 
     type: "POST", 
     url "someurl.php", 
     data: {somedata}, 
     success: function(html) { 
      $this.next().html(html); //this does not update .next() element. 
     } 
    }); 
});