繁体   English   中英

PHP + AJAX表单提交不起作用

[英]PHP + AJAX Form Submit Not Working

我对AJAX的概念是完全陌生的,但是发现它对于完成我打算要做的事情是必需的。 基本上,我只需要它就可以在帖子发生时将php变量$ submitted设置为true,这反过来对我的数据库运行查询。 出于某种原因,尽管这段代码对我来说很有意义,但即使我收到“成功”警报并且没有控制台错误,也似乎并没有将它添加到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;
}

?>

尝试这样做:

捕获表单提交并通过Ajax进行POST,然后删除表单中的操作,即指向call.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> 

请尝试在下面使用此代码。

当您成功正确填写表单的所有字段并单击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>";

设置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示例的帖子。 试试看

防止页面加载到jQuery表单上,而无显示按钮

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM