2012-03-14 11 views
2

У меня есть HTML-форма на моем сайте, которая отправляется через Ajax в php-файл после его проверки с помощью jQuery. Вот форма открывающий тег:HTML Form Action - «Порядок работы»

<form action="#" method="post"> 

Я думал положить path_to_process_file.php в виде action (как показано ниже), так что, если у них есть JavaScript отключен в браузере, они все равно будут иметь возможность заполнить и отправьте форму.

<form action="../path_to_process_file.php" method="post"> 

Мой вопрос:

  • Что оглавлению Порядок операций "файлы должны содержать, при отправке формы, когда JavaScript включена?
  • Будет ли он сначала использовать путь действия php? Или сначала попробуете отправить через JavaScript?

** ОБНОВЛЕНИЕ: Вот мой JS, используемый для отправки через Ajax.

$(document).bind("pageinit", function(event, data) { 
    $("#rackback-quote-request-form").validate({ 
     // Custom validation messages 
     messages: { quote_name: "Please enter your full name."}, 
     errorElement: "p", 
     submitHandler: function(form){ 

      //Get the data from the form fields and format correctly 
      var product = $("#rackback-quote-request-form #product").val(); 


      var data = 'product=' + product; 
      $.ajax({ 
       type: "POST", 
       url: "../php/QR-rackback.php", 
       data: data, 
       success: function(data) { 
         $("#rackback-quote-request-wrapper").hide(); 
         $("#rackback-quote-request-success").append("<center><h3>Thanks! Your quote request has been sent.</h3></center>"); 
        }, 
       error: function(){ 
        alert("Javascript error, please try again"); 
       } 
      }); 
      return false; 
     } 
    }); 
}); 

Где бы я поставил event.preventDefault();? **

+0

Рассмотрите возможность использования чего-то типа 'function (e) {e.preventDefault(); } ', чтобы остановить общий POST; таким образом вы можете контролировать действие, если JavaScript доступен – kurttheviking

+0

Я знаю немного JQuery (я использую MooTools), но я думаю, что вы должны сделать event.preventDefault() в начале скрипта. В случае MooTools этот метод предотвращает действие по умолчанию для события, а не препятствует каким-либо образом следующим действиям. –

ответ

4

Ну, ваш JS необходимо будет прикрепить к событию отправки. В этом случае вы можете помешать ему делать то, что он, естественно, сделал бы так:

$('#form_id').submit(function(event) { 
    event.preventDefault(); 
    // use jQuery's ajax() method here to do what you want 
}); 
+0

Если вы уже подключились к событию 'submit', браузер выполнит оба действия (запустите js, а затем отправьте в обычном порядке), если вы не используете' event.preventDefault() ', как предлагает этот ответ. – bfavaretto

+0

Вы обратили внимание на вторую строчку? Если вы добавите event.preventDefault(); вы подавляете исходное действие HTML. – Steve

+0

Извините, я пропустил это в первый раз ... Я обновил свой код наверху. Где бы я помещал 'event.preventDefault();'? – adamdehaven

2

JavaScript сначала выполняется, и с ним у вас есть возможность подавить нормальную (HTML способ) отправки формы.

Есть много способов сделать это в зависимости от структуры вы используете, но с простой равнине JavaScript вы можете выполнить следующие действия:

  • Attach событие «onSubmit» в форме.
  • Если вы хотите подавить «нормальное представление» (способ HTML) формы, просто return false.
+0

Как бы вы подавили нормальное действие HTML? Другими словами, как я могу заставить отправлять через Javascript, если он включен? – adamdehaven

+0

Как я уже сказал в моем ответе ниже, вы подавляете нормальное действие HTML в JS через нечто вроде event.preventDefault(); – Steve