2014-10-22 3 views
0

Привет, Я создал веб-сайт, который имеет форму, действие которой направляется на оплату платежа. Перед тем, как перейти на страницу PayPal, я создал сценарий ajax, который будет читать внешний файл php, который сохранит мои другие данные в форме в базе данных, прежде чем направлять на paypal. Я работал с IE и хром, но по некоторым причинам я не знаю, почему он не сохранит данные с помощью Firefox 20.0.1.Проблемы с совместимостью ajax с firefox

Я хочу, чтобы это работало в Firefox. Поскольку этот код работает в IE и Chrome.

Heres мой внутренний сценарий Ajax:

<script> 
    $(function() { 
     $('#senrollnow').on('submit', function (e) { 
      $.ajax({ 
      type: 'post', 
      url: 'insert.php', 
      data: $('#senrollnow').serialize(), 
      success: function() { 
       alert('form was submitted'+data); 
      } 
      }); 
     }); 
     }); 
</script> 

Мой HTML-форм (index.php):

<form action="https://www.paypal.com/cgi-bin/webscr" name="ligit" method="POST" id="senrollnow" target="_top" > 
          <div class="row"> 
           <div class="large-12"> 
            <div class="row"> 
             <div class="large-6 columns"> 
              <input type="text" placeholder="First Name" name="first_name" required /> 
             </div> 
             <div class="large-6 columns"> 
              <input type="text" placeholder="Last Name" name="last_name" required /> 
             </div> 
            </div> 
            <div class="row"> 
             <div class="large-12 columns"> 
              <input type="email" placeholder="Email" name="email" required /> 
             </div> 
            </div> 
            <div class="row"> 
             <div class="large-12 columns">   

              <input type="hidden" name="on0" value="Courses Options">Courses Options 
              <select name="os0"> 
               <option value="Basic (30 mins)">Basic (30 mins) : $69.00 AUD - monthly</option> 
               <option value="Basic (1 hour)">Basic (1 hour) : $129.00 AUD - monthly</option> 
               <option value="Standard (30 mins)">Standard (30 mins) : $69.00 AUD - monthly</option> 
               <option value="Standard (1 hour)">Standard (1 hour) : $129.00 AUD - monthly</option> 
               <option value="International (30 mins)">International (30 mins) : $69.00 AUD - monthly</option> 
               <option value="International (1 hour)">International (1 hour) : $129.00 AUD - monthly</option> 
              </select> 
             </div> 
            </div> 
            <br/> 
            <div class="row"> 
             <div class="large-12 large-centered columns text-center"> 
              <input type="hidden" name="currency_code" value="AUD"> 
              <input class="pulse-shrink" type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
              <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
              <!--<input id="button_enroll" type="submit" name="ligit" placeholder="Email" class="button" value="Enrol Now!" /> --> 
             </div> 
            </div> 
            <a class="close-reveal-modal">&#215;</a> 
           </div> 
          </div> 
         </form> 

И мой PHP: insert.php

require_once "dbconfig.php"; 

// escape variables for security 
$firstname = mysqli_real_escape_string($con, $_POST['first_name']); 
$lastname = mysqli_real_escape_string($con, $_POST['last_name']); 
$email = mysqli_real_escape_string($con, $_POST['email']); 
$type = mysqli_real_escape_string($con, $_POST['os0']); 

$date = date_create(); 
$created = date_format($date, 'Y-m-d H:i:s'); 

$sql="INSERT INTO student (first_name, last_name, email, type, created) 
VALUES ('$firstname', '$lastname', '$email', '$type', '$created')"; 

if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
} 

header('Location: index.php'); 
+0

вы пытались с помощью Firebug, чтобы увидеть, если вызов Ajax в настоящее время срабатывает и если есть какие-либо ошибки возвращается – andyface

+0

на самом деле я не использую поджигатель, так как я новичок в разработке и используется хром F12 много , в любом случае я попытаюсь использовать его и посмотреть, что произойдет. – Ikong

ответ

3

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

Я хочу, чтобы вы делали действия, отправляйте форму на PayPal и на свой сервер отдельно. Один из способов - отправить форму ajax и вызвать event.preventDefault(), чтобы предотвратить отправку формы по умолчанию и при успешном обратном вызове, который вы можете отправить.

Простейшим примитивным способом является добавление класса для формирования, например.

$('#senrollnow').on('submit', function (e) { 
     var form = $(this); 
     if(!form.hasClass('pending')) { 
      e.preventDefault(); 
      form.addClass('pending'); 
      $.ajax({ 
       type: 'post', 
       url: 'insert.php', 
       data: $('#senrollnow').serialize(), 
       success: function() { 
       form.submit(); 
       // alert('form was submitted'+data); 
       } 
      }); 
     } 
}); 
+0

Это хорошее решение, это позволяет вставлять данные в базу данных. Проблема в том, что когда я пытаюсь проверить ее в chrome, я не буду прекращать вставлять данные в мою базу данных и не продолжать действие. – Ikong

+0

Я только что редактировал код. попробуйте еще PLS – Panoptik

+0

отличный, очень полезный человек. Я изучу, что вы здесь сделали. Благодарю. – Ikong

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