2015-02-25 4 views
0

У меня есть простая страница, которая принимает form и делает jsonpajax Запросить и форматирует ответ и отображает его на странице, это все нормально, но я хотел добавить его так, (через php $_GET переменных), тогда форма автоматически отправит на загрузку страницы, но вместо этого происходит то, что страница постоянно обновляется, несмотря на то, что функция submit возвращает false.Неполадки Форма отправки программно

кнопку Submit (просто чтобы показать, что не имеет id как submit или что-нибудь)

<button type="submit" id="check" class="btn btn-success">Check</button> 

JQuery

$(document).ready(function() { 

    $('#my_form').on('submit', function() { 

     var valid = 1; 

     $('#my_form .required').each(function() { 
      if ($(this).val() == '') { 
       $(this).parents('.form-group').addClass('has-error'); 
       valid = 0; 
      } else { 
       $(this).parents('.form-group').removeClass('has-error'); 
      } 
     }); 

     if (valid === 1) { 

      $.ajax({ 
       url: '/some_url', 
       data: $('#my_form').serialize(), 
       type: 'GET', 
       cache: false, 
       dataType: 'jsonp', 
       success: function(data) { 

        var html = 'do something with data'; 

        $('#results').html(html); 

       }, 
       error: function() { 
        $('#results').html('An error occurred, please try again'); 
       } 
      }); 
     } else { 
      $('#results').html('Please fill in all required fields'); 
     } 

     return false; 
    }); 
}); 

В части я добавил только после того, как $(document).ready(function(){ и до submit был:

if ($('#input_1').val() != '' || $('#input_2').val() != '') { 
    // $('#check').trigger('click'); 
    $('#my_form').submit(); 
} 

Обе эти линии имеют такой же эффект, но я делаю то же самое в другом проекте, и это прекрасно работает, насколько я вижу, единственная разница в версии jQuery, я использую 1.11 для этой страницы.

Update

Извиняюсь, я, кажется, ответили на свой вопрос, я думал, что, так как программный submit был первым делом $(document).ready(function(){ тогда, возможно, это был тот случай, когда фактическая submit функция не является до того, как событие было запущено, поэтому я просто переместил этот блок после функции submit, и теперь он отлично работает.

+0

Duplicate: http://stackoverflow.com/questions/27719609/prevent-default-form-submit-when-submitting-from-javascript – hindmost

+0

@hindmost, очень похоже, но этот вопрос не очень полезен, но никогда не будет, я есть ответ. – martincarlin87

ответ

0
url: '' 

похоже, что вы отправляете свой запрос ajax ни к чему.

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

$("#myForm").submit(); 

будет отправить форму в атрибуте действия формы, а затем перенаправить страницу там.

+0

спасибо, извините за путаницу в отношении 'url', я просто оставил его пустым, поскольку он указывает на внутренний api, вместо этого я обновлю вопрос с помощью некоторого заполнителя. Мне тоже удалось найти проблему с submit. – martincarlin87

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