2010-05-05 5 views
0

Я пытаюсь проверить, что имя учетной записи еще не используется после того, как пользователь заполнил форму. Код выглядит следующим образом:

$("#add_account").submit(function() { 
      $.get(
       "'.url::site("ajax/check_account_name").'", 
      {account_name: "t"}, 
      function(data){ 
       alert(data); 
      }); 
     }); 

Я получаю ответ $ .get если оператор сидит так:

$(document).ready(function() { 
      $.get(
       "'.url::site("ajax/check_account_name").'", 
      {account_name: "t"}, 
      function(data){ 
       alert(data); 
      }); 
     }); 

что приводит меня к мысли, что мой $ .get утверждение верно. Есть ли какое-то правило jQuery, с которым я не знаком, это может привести к тому, что это не сработает при отправке сценария?

В блоке 1 кода я возвращаю значения, как они должны. Блок 2 дает мне пустой ответ.

Любые идеи? Спасибо за ваше время, я знаю, что у вас есть все, что нужно делать.

+3

'return false;'? – James

+0

Как сказал J-P, 'return false' в конце вашего обработчика отправки. @ J-P, вы должны опубликовать это как ответ :) – karim79

+0

Что происходит с 1-м блоком? Попробуйте .submit (функция (e) { e.preventDefault(); // остальная часть вашего кода }); – Shiki

ответ

1

Обработчики Javascript стреляют перед действием по умолчанию, на котором вы нажимали. Итак, если у вас есть этот оператор $ .get, прикрепленный к кнопке отправки формы, тогда оператор $ .get запускается перед отправкой формы с помощью методов браузера.

Чтобы отменить это действие, вы должны указать return false; в конце обработчика кликов, чтобы отменить действие по умолчанию, как указано J-P. Это работает и для ссылок.

+0

Благодаря вам и J-P. Я ценю объяснение. Это имеет смысл. – bradenkeith

Смежные вопросы