2016-04-14 4 views
0

Я совершенно не знаком с концепцией AJAX, но обнаружил, что это необходимо для того, чтобы выполнить то, что я собираюсь сделать. В основном мне просто нужно установить переменную php $, представленную, равную true, когда происходит сообщение, которое, в свою очередь, запускает запрос в мою базу данных. По какой-то причине, хотя этот код имеет смысл для меня, похоже, что он не попадает в файл ajax, хотя я получаю предупреждение «success», и у меня нет консольных ошибок. Что-нибудь нелепое?PHP + AJAX Form Submit Не работает

<form action="call.php" method="post"> 
<input class="oomText" type="text" name="accountName" placeholder="Account Name"><br> 
<input class="oomButton submit" type="submit" name="submit" value="submit"> 

<script> 
$(document).ready(function(){ 
$('.oomButton.submit').click(function(){ 
    var clickBtnValue = $(this).val(); 
    var ajaxurl = '/ajax.php', 
    data = {'action': clickBtnValue}; 
    $.post(ajaxurl, data, function (response) { 
     alert("Account Created"); 
    }); 
}); 

}); 
</script> 
</form> 

ajax.php

<?php 
if (isset($_POST['action'])) { 
switch ($_POST['action']) { 
    case 'submit': 
     submit(); 
     break; 
} 
} 

function submit() { 
$submitted = true; 
exit; 
} 

?> 
+0

Где вы закроете '' элемент

? –

+0

К сожалению, он закрыт под тегом закрывающего скрипта. – codnor

+0

вы могли бы что-то повторить в своем php-файле, а затем сообщить своему сценарию, что вместо «создана учетная запись». который будет проверять, удаляет ли скрипт этот файл. –

ответ

0

Когда вы устанавливаете переменную PHP, она исчезнет, ​​как только закончится PHP-скрипт. Однако, если вы используете переменную PHP $_SESSION, она будет сохраняться.

Чтобы использовать переменные PHP $_SESSION, просто добавьте session_start() в самый верх всех скриптов PHP. Обратите внимание, что session_start() должно быть . Инструкция. Если какие-либо другие заголовки PHP отправлены, session_start() не будет работать.

Таким образом, ваш другой PHP файл также проверить $_SESSION['submitted'] переменной (опять же, session_start() требуется до верха) чтобы убедиться, что он в порядке, чтобы запустить DB вставку.

HTML/JS:

<form action="call.php" method="post"> 
    <input class="oomText" type="text" name="accountName" placeholder="Account Name"><br> 
    <input class="oomButton submit" type="submit" name="submit" value="submit"> 
</form> 

<script> 
    $(document).ready(function(){ 
     $('.oomButton.submit').click(function(){ 
      var clickBtnValue = $(this).val(); 
      var ajaxurl = 'http://clients.oomdo.com/provision/ajax.php', 
      data = {'action': clickBtnValue}; 
      $.post(ajaxurl, data, function (response) { 
       alert(response); 
      }); 
     }); 

    }); 
</script> 

ajax.php

<?php 
    session_start(); 
    if (isset($_POST['action'])) { 
     switch ($_POST['action']) { 
      case 'submit': 
       submit(); 
       echo 'Hurrah'; 
     } 
    } 

    function submit() { 
     $_SESSION['submitted'] = true; 
    } 

?> 

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

Prevent Page Load on Jquery Form Submit with None Display Button

+0

Ну ... вот и все! Я уже использую массу переменных сеанса и не думаю, что внесегментная переменная будет сброшена. Спасибо, кучка! – codnor

0

Попробуйте сделать это:

Поймать отправки формы и сделать POST с помощью Ajax, и удалите действия в форме, вы направляете позвонить .php, поэтому, когда вы отправляете форму, действие переходит на call.php.

<form id="form" method="post"> 
 
<input class="oomText" type="text" name="accountName" placeholder="Account Name"><br> 
 
<input class="oomButton submit" type="submit" name="submit" value="submit"> 
 

 
<script> 
 
$(document).ready(function(){ 
 
    
 
$('#form').on('submit', function(e){ 
 
    
 
    var clickBtnValue = $('.oomButton .submit').val(); 
 
    var ajaxurl = 'http://clients.oomdo.com/provision/ajax.php', 
 
    data = {'action': clickBtnValue}; 
 
    $.post(ajaxurl, data, function (response) { 
 
     alert("Account Created"); 
 
    }); 
 
}); 
 

 
}); 
 
</script> 
 
</form>

+0

Спасибо за ответ! К сожалению, не повезло. Все еще пытаюсь сделать так же, как и проверку ошибок, как я могу – codnor

0

Попробуйте использовать этот код, приведенный ниже.

Когда вы успешно заполните все поля формы и нажмете submit, она предложит вам оповещение js. PHP для js не всегда нужен ajax к счастью. Обратите внимание, как я поместил js в файл php. Я просто запускаю все это из вызова формы.

mail($toaddress, $subject, $message, $headers); 
$success=htmlspecialchars($_GET['to']); 
$success=ucwords($success); 
$valid= 'sent to' . ' ' . $success . ' ' . 'from a php server. Hit the back arrow' ; 
echo "<script type='text/javascript'>alert('$valid');</script>";