2016-04-14 131 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>";