Jquery Post отправляет значения формы, несмотря на наличие ошибок проверки - PullRequest
0 голосов
/ 14 декабря 2011

Я пытаюсь вставить значения моей формы в базу данных, используя Jquery AJjax, и у меня есть следующий скрипт для отправки данных на мой контроллер, и он работает нормально. Я использую плагин проверки jquery, чтобы проверить мою форму. Теперь проблема в том, что когда я отправляю кнопку формы, и даже при наличии некоторых ошибок валидации (мой плагин валидации показывает, что) значения формы отправляются в базу данных. Но я хочу, чтобы они отправлялись, только если нет ошибок проверки.

И после отправки формы значения все равно остаются в форме.

Не могли бы вы сказать мне, где я делаю неправильно.

Только для вас, я использую Codeigniter.

<script  type="text/javascript">
  $(document).ready(function(){ // added
 $('#submit_item').click(function(){

    var teacherid = $('#teacherid').val();  
    var salary_amount = $('#salary_amount').val(); 



$.ajax({

   type: "POST",
   url: "<?php echo base_url(); ?>addteacher_salary/add_ajax",
   data: "teacherid="+teacherid+ "&salary_amount="+ salary_amount,
   success: function(html){
    $("#show").html(html);


       }
});

return false
});
}); // added
</script>

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Я не уверен, что полностью понимаю, как вы хотите, чтобы это происходило, но другой подход заключается в использовании опции submitHandler, как описано в документации :

Обратный вызов для обработки фактической отправки, когда форма действительна.Получает форму в качестве единственного аргумента.Заменяет отправку по умолчанию.Правильное место для отправки формы через Ajax после ее проверки.

$(".selector").validate({
   submitHandler: function(form) {
     $(form).ajaxSubmit();
   }
})

В качестве головы: я считаю, $(form).ajaxSubmit(); использует плагин формы jQuery.Если у вас его нет или вы не хотите его использовать, вы можете вместо этого просто поместить туда текущее представление ajax.

Примечание:

Аргумент data для $.ajax может быть литералом объекта, поэтому вам не нужно беспокоиться о добавлении знаков вопроса и амперсандов самостоятельно.Вы можете сделать что-то вроде этого:

data: {
    teacherid: $('#teacherid').val(),
    salary_amount: $('#salary_amount').val()
}
0 голосов
/ 14 декабря 2011

Здесь происходит не то, что форма отправляется, а то, что вы берете все значения из формы и публикуете их без отправки формы и полностью без проверки значений, которые вы получаете.

Возможно, ваш плагин проверки имеет функцию, которую вы можете вызвать вручную, чтобы проверить, является ли форма действительной, прежде чем вы отправите сообщение AJAX.Возможно, вы захотите взглянуть на функции valid()

if(!$('#my-form').valid())
    return false;

$.ajax({ ... });

... или form().Но есть куча плагинов валидатора, поэтому я не уверен, что это то, что вы имеете в виду.Независимо от того, что вы хотите сделать, это вручную запустить проверку перед отправкой сообщения AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...