2013-05-22 4 views
-1
<html> 
<head> 
<SCRIPT TYPE="text/javascript" SRC="/static/js/jquery-1.7.1.min.js"></SCRIPT> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#search-form").submit(function() { 
      var formInput = $("#search-box").val(); 
      $.post("/userq/", {"formInput": formInput}); 
      return true; 
     }); 
    }); 
</script> 
</head> 
<body> 
    <form method="GET" action="/search/" id="search-form"> 
     <input type="text" name="formInput" class="searchbox" id="search-box"> 
     <input type="submit" VALUE="Search" class="submitbutton" id="submit-button"> 
    </form> 
</body> 
</html> 

Выше моей страницы html. Когда форма (# search-form) отправлена, я сначала хочу отправить сообщение в url «/ userq», а затем окончательное действие «/ search», которое будет отправлено. Но $ .post для «/ userq» никогда не бывает. Если я использую отладчик javascript и точку останова в $ .post, тогда сообщение срабатывает. Что здесь не так?jQuery.post not firing on a form submit

+0

Вы подтвердили серверную сторону, что сообщение не происходит? –

+1

Почему бы не изменить метод формы для публикации и действия в нужное место? Я не вижу, что вы делаете что-либо с результатом сообщения ... – Maess

+0

@Maess И это тип людей, которых мне не нравится. Он спрашивает и уходит ... Мы пытаемся помочь людям, но они не дают нам никакой обратной связи. – WooCaSh

ответ

1

Лучшее решение:

$(document).ready(function() { 
    var sended = false; 
     $("#search-form").on('submit', function(e) { 
      e.preventDefault(); 
      var formInput = $("#search-box").val(); 
      $.post("/userq/", {"formInput": formInput}) 
      .done(function(){ 
       if(!sended) 
        $("#search-form").submit(); 
       sended = true; 
      }); 
     }); 
    }) 
+0

Но я хочу, чтобы нормальное действие также выполнялось, т. Е. Отправляя URL-адрес «/ search». –

+0

Значит, вы хотите опубликовать его дважды? Первый раз на '/ search /' и второй ond '/ userq /'? – WooCaSh

+0

Да. Но немного другое ... .первое сообщение в «/ userq», а затем перейти к «/ search». Я думаю, что это вопрос времени. –

1

Проблема может быть, как вы определили «GET» метод и «МЕР» в форме элемента Попробуйте поставить event.preventDefault();, чтобы остановить форму от представления, как правило, так что он может позвонить jQuery.post().

$(document).ready(function() { 
     $("#search-form").submit(function() { 
      event.preventDefault(); 
      var formInput = $("#search-box").val(); 
      $.post("/userq/", {"formInput": formInput}); 
      return true; 
     }); 
    }); 

Попробуйте это, а затем проверьте.

+0

Хорошо .. собираюсь попробовать это и даст вам знать. –

+0

Но это останавливает нормальное действие. Как я могу убедиться, что «/ search» также будет отправлен? –

+0

, если вы хотите выполнить оба действия впоследствии, вы можете вызвать событие формы и jQuery.post() при событии нажатия кнопки. –

0

Фактически понял, что это невозможно. Сообщение jquery фактически никогда не происходит, потому что форму submit заменяет страницу.