Внутренняя функция отправки jQuery не работает - PullRequest
2 голосов
/ 21 мая 2011

У меня проблема с этим кодом jQuery. Это не работает, как ожидалось:

$('#select_dropdown').change ( function(){
    $('#form_to_submit').submit( function(event){
        $.post("process.php", { name: "John" },
    function(data) {
        alert("Data Loaded: " + data);
    });
    });
});

Однако это работает:

$('#select_dropdown').change ( function(){
    $('#form_to_submit').submit();
});

Интересно, почему не работает внутренняя функция submit. Когда пользователь выбирает значение из раскрывающегося списка, форма должна быть отправлена. Второй набор кодов работает, но если я добавляю внутреннюю функцию для отправки, это не так.

По сути, я хочу сделать ajax-вызов после того, как пользователь выберет выпадающий список.

Ответы [ 2 ]

0 голосов
/ 21 мая 2011

Вот что вы можете сделать:

$("#form_to_submit").submit(function(){
   //do your post stuff here
});

$('#select_dropdown').change ( function(){
   $("#form_to_submit").submit()
});

Что я делаю, это:

  1. Определите обработчик для события отправки form_to_submit
  2. Определите обработчик, когда пользователь делает выбор на select_dropdown, который вызывает отправку даже в форме.

================

если у вас есть код

$('#list_per_page').change ( function(){
    $('#list_count').submit( function(event){
        alert('It Works!');
    });
});

и

   $('#list_count').submit();

, тогда он будет работать.Причина в том, что для того, чтобы появилось сообщение «Это работает», необходимо вызвать событие отправки.

Первый блок добавляет обработчик к событию отправки, когда происходит событие изменения.Поэтому при изменении #list_per_page обработчик события отправки будет добавлен к элементу #list_count.

Второй блок просто запускает отправку даже на #list_count;поэтому, вызывая обработчик, который вы добавили в первый блок.

Имейте в виду, что события происходят асинхронно, кажется, что вы ожидаете, что ваш код будет выполняться последовательно.

Мой код выше НЕ является решением вашей проблемы;это только для демонстрационных целей.Пожалуйста, расскажите нам, чего вы хотите достичь, тогда люди могут предложить вам лучшие практики: -)

0 голосов
/ 21 мая 2011

Первый код создает обработчик события для отправки события на селектор $ ('# list_count'), скорее всего, на элемент формы.Второй код вызывает метод submit для этого элемента.Первый будет срабатывать, когда вы отправляете форму любым способом, но сама она не будет отправлять форму.Что вы пытаетесь сделать?

РЕДАКТИРОВАТЬ

Вы хотите сделать это

$('#select_dropdown').change ( function(){
    $.post("process.php", { name: "John" }, function(data) {
        alert("Data Loaded: " + data);
    });
});
...