2016-04-14 129 views
0

我完全不熟悉AJAX的概念,但發現它是完成我所要做的事情所需要的。基本上我只是需要它需要設置變量$提交等於true發生一個職位,然後運行查詢到我的數據庫。出於某種原因,雖然這段代碼對我來說很有意義,但它似乎並沒有將它傳遞給ajax文件,即使我得到了「成功」警報並且沒有控制檯錯誤。有什麼明顯的錯誤?PHP + AJAX表單提交不起作用

<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變量,只需在所有PHP腳本的頂部添加session_start()。請注意,session_start()必須是第一個指令 - 如果發送任何其他PHP頭文件,session_start()將不起作用。

因此,有你的其他PHP文件還測試$_SESSION['submitted']變量(再次,需要高達session_start()頂部),以確保它是好的,運行數據庫插件。

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

試着這樣做:

趕上形式提交,並通過Ajax的POST,並刪除形式的行動,你都指向調用.php,所以當你提交表單的時候,action會去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

嘗試使用下面這段代碼。

當您成功填寫表單的所有字段並點擊提交後,它會提示您使用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>";