2010-05-02 2 views
1

У меня есть несколько элементов «select» на странице. Когда я выбираю некоторые параметры, запрос ajax отправляется на сервер, а элемент , расположенный рядом с этим «select», должен быть обновлен с ответом. Я ожидал, что следующий код будет работать:jQuery success: function {} issue

$(".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); 

Я вижу Аякса запрос был успешным. Более того, работает только в том случае, если на странице имеется только один «выбор», иначе появится пустое всплывающее окно.

+0

В ответ на ваш комментарий ниже, чтобы получить/установить выбранную опцию в поле выбора, используйте .val(), а не .html(). Надеюсь, что поможет – BradBrening

ответ

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

+0

Но это выглядит как ошибка в серверном коде, поэтому этот вопрос должен быть отмечен как «ответил». – ufw

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. 
     } 
    }); 
});