2017-06-25 32 views
0

フォームを検証する必要があります。成功した後、別のPHPファイルにリダイレクトする必要があるPHPファイルにすべての値を渡しますPOST、それは可能ですか?POSTで成功した後、Ajaxが別のページにリダイレクトする

私が行うための最善の方法ならばこれは私のAjaxコードであるので、私はすべての提案に開いていることを

を知らない

$("form#Reservation").submit(function(){ 
var formData = new FormData($(this)[0]); 
$.ajax({ 
    url: 'confirmreservation.php', 
    type: 'POST', 
    data: formData, 
    async: false, 
    success: function (data) { 

     values=data.split('|'); 
     one=values[0]; 
     two=values[1]; 
     switch (one) 
     { 
      case '1': 
       // here I need something like this 
       // POST(two) to payment.php 
       break; 
      case '2': 
       $("#reservation-fields").css("visibility","visible"); 
       break; 
      case '3': 
       $("#reservation-fields").css("visibility","hidden"); 
       $("#personal-fields").css("visibility","visible"); 
       break;     
      case '4': 
       $("#personal-fields").css("visibility","hidden"); 
       $("#arrival-fields").css("visibility","visible"); 
       break; 
      case '5': 
       $("#arrival-fields").css("visibility","hidden"); 
       $("#departure-fields").css("visibility","visible"); 
       break; 
      case '6': 
       $("#departure-fields").css("visibility","hidden"); 
       $("#details-fields").css("visibility","visible"); 
       break;              
      default: 
      alert(data); 
     } 
    }, 
    cache: false, 
    contentType: false, 
    processData: false 
}); 

return false; 
}); 

そして、これは私のPHPファイル「confirmreservation.phpです「

<?php 
require "conexion.php"; 
require "functions.php"; 

if ($_POST['service']==null||$_POST['destination']==null||$_POST['people']==null||$_POST['vehicle']==null) 
{ 
    echo "2|0"; 
} 
else 
{ 

    if($_POST['service'] == 1) 
    { 
     if ($_POST['fname']==null||$_POST['lname']==null||$_POST['email']==null||$_POST['phone']==null) 
     { 
      echo "3|0"; 
     } 
     else 
     { 

      if ($_POST['arrival-date']==null||$_POST['arrival-time']==null||$_POST['arrival-airline']==null||$_POST['arrival-flight']==null) 
      { 
       echo "4|0"; 
      } 
      else 
      { 
       if ($_POST['departure-date']==null||$_POST['departure-time']==null||$_POST['departure-pick']==null||$_POST['departure-airline']==null||$_POST['departure-flight']==null) 
       { 
        echo "5|0"; 
       } 
       else 
       { 
        if ($_POST['message']==null||$_POST['payment']==null) 
        { 
         echo "6|0"; 
        } 
        else 
        { 
         $ID = 0; 
         $Consult = $Conexion->query('SELECT ID_Client FROM clients ORDER BY ID_Client DESC LIMIT 1'); 
         while ($Fila = $Consult->fetch_assoc()) { 
          $ID = $Fila['ID_Client'] + 1; 
         } 
         if($ID == 0){ $ID = 1; } 
         if($_POST['lang'] == "sp") { 
          $Arrival = Formato_es_to_date($_POST['arrival-date']); 
          $Departure = Formato_es_to_date($_POST['departure-date']); 
         } elseif($_POST['lang'] == "en") 
         { 
          $Arrival = Formato_en_to_date($_POST['arrival-date']); 
          $Departure = Formato_en_to_date($_POST['departure-date']); 
         } 

         $Conexion->autocommit(false); 
         $Queries=true; 

         $Conexion ->query("INSERT INTO clients 
          (ID_client,Client_fname,Client_lname,Client_email,Client_phone) VALUES 
          ('".$ID."','".$_POST['fname']."','".$_POST['lname']."','".$_POST['email']."','".$_POST['phone']."')") ? null : $Queries=false; 

         $Conexion ->query("INSERT INTO reservation 
          (Reserv_service,Reserv_destination,Reserv_people,Reserv_vehicle,Reserv_client,Reserv_arrival_date,Reserv_arrival_time,Reserv_arrival_airline,Reserv_arrival_flight,Reserv_departure_date,Reserv_departure_time,Reserv_departure_airline,Reserv_departure_flight,Reserv_departure_pick,Reserv_message,Reserv_payment) VALUES 

          ('".$_POST['service']."','".$_POST['destination']."','".$_POST['people']."','".$_POST['vehicle']."','".$ID."','".$Arrival."','".$_POST['arrival-time']."','".$_POST['arrival-airline']."','".$_POST['arrival-flight']."','".$Departure."','".$_POST['departure-time']."','".$_POST['departure-airline']."','".$_POST['departure-flight']."','".$_POST['departure-pick']."','".$_POST['message']."','".$_POST['payment']."')") ? null : $Queries=false; 

         if($Queries == false) 
         { 
          $Conexion->rollback(); 
          echo "Error, please contact the provider"; 
         } 

         $Conexion->commit(); 
         echo "1|".$ID; 
        } 
       } 
      } 
     } 
    } 
} 

mysqli_close($Conexion); 
?> 
+1

通常のフォーム送信を使用すると、デフォルトでリダイレクトされます – adeneo

+0

返信いただきありがとうございます@adeneo、あなたはajaxなしで意味ですか? –

+0

空のフィールドのアラートを追加するにはどうすればよいですか?説明はしませんでしたが、ケース1が成功した場合、空のフィールドのアラートが表示されるので、Ajax @adeneoを使用している理由は –

答えて

2

典型的なパターンは次のようになります

$("form#Reservation").submit(function(e) { 
    e.preventDefault(); 
    var form = this; 
    $.ajax({...}).then(function(data, textStatus, jqXHR) { 
     if(data.valid) { // some test or other 
      $("input#payment").val(data.someProperty); // put value in some (hidden) form field. 
      form.submit(); // the form will submit in accordance with the <form> tag's action and method attributes. 
     } else { 
      $("#message").text('validation failed'); 
     } 
    }, function(jqXHR, textStatus, errorThrown) { 
     $("#message").text(textStatus || errorThrown); 
    }); 
}); 

このパターンのコードを簡単に作成する必要があります。たとえば、いくつかの変更を加えるだけです。たとえば、...

  • flesh out the ajax params。
  • 私のif(...) {...} else {...}をスイッチ/ケース構造に置き換えてください。
  • フォームに<input id="payment" />フィールドがあることを確認してください。
  • ページの内容がid="message"(または何でも)であることを確認してください。

元のフォーム全体を「payment.php」に送信したくない場合は、別の(オフスクリーンの)フォームを作成して提出することができます。

関連する問題