当前位置: 首页 > 知识库问答 >
问题:

jquery ajax提交按钮

易京
2023-03-14

我使用bootstrap模式获得了一个register表单,它将调用ajax post函数。

但是,它似乎并不执行我的$.post。另外,如何将php函数的返回值使用到ajax数据中?那么,如果我的createAccount返回true或其他值,我的ajax如何捕获它呢?

<form action="" id="registerForm" method="POST">
   .....
        <div class="d-grid gap-2"> 
            <button class="btn btn-primary" id="btnRegister" type="submit">Register!</button>

</form>

我的阿贾克斯。

$("#email").keyup(function(){
    var email = $("#email").val()
    {
        $('#emailResult').remove();
        $.post("createaccount.php",{
            checkEmail : email
        }, function(data){
            if(data=="true")
            {
                error=true;
                var str = '<div id="emailResult">';
                str +='<div class="alert alert-danger" role="alert">';
                str +='Email address already exists!';
                str+= '</div></div>';
                $('#result').append(str); 
            }
            else
            {
                error="false";
            }
        });
    }
});

    $("#btnRegister").click(function(){
    var email = $("#email").val();
    var password = $("password").val();
    $.post("createaccount.php",{
        email : email,
        password : password
    },function(data){
        alert(data);
    })
});

我的CreateAccount.php

<?php
include("db.php");
include("functions.php");

if(isset($_POST['checkEmail']))
{
    $email = $_POST['checkEmail'];
    {
        if(checkEmailExists($email))
        {
            echo "true";
        }
    }
}

if(isset($_POST['submit']))
{
    $email = $_POST['email'];
    $password = $_POST['password'];

    if(createAccount($email,$password))
    {
        return true;
    }
    else
    {
        return false;
    }

}
?>

我的函数.php

function createAccount($email,$password)
{
    global $conn;
    $hashPassword = password_hash($password,PASSWORD_DEFAULT);
    $sql = "INSERT into USERS (email,password) VALUES ('$email','$hashPassword')";
    if(mysqli_query($conn,$sql))
    {
        return true;
    }
    else
    {
        echo mysqli_error($conn);
        return false;
    }

}

共有2个答案

魏航
2023-03-14

尝试添加这个

$("#btnRegister").click(function(e){
   e.preventDefault();
   // Your code...

而不是

$("#btnRegister").click(function(){
   // Your code...

此代码将停止表单在单击按钮时提交。

顺便说一下,对于电子邮件检查,使用另一个true false值来阻止表单提交,直到邮件验证结果出现。

var error=true;
$("#email").keyup(function(){
    var email = $("#email").val()
    {
        $('#emailResult').remove();
        $.post("createaccount.php",{
            checkEmail : email
        }, function(data){
            if(data=="true")
            {
                error=true;
                var str = '<div id="emailResult">';
                str +='<div class="alert alert-danger" role="alert">';
                str +='Email address already exists!';
                str+= '</div></div>';
                $('#result').append(str); 
            }
            else
            {
                error=false;
            }
        });
    }
});

后来...

if(!error){
    $.post("createaccount.php",{
        email : email,
        password : password
    },function(data){
        alert(data);
    }) 
} 
曹臻
2023-03-14

为了在PHP代码中找到正确的位置,您需要在POST数组中有一个submit参数

if(isset($_POST['submit'])) {

但您的AJAX调用不传递该参数,因此添加它

$("#btnRegister").click(function(e){
    e.preventDefault();
    
    $.post("createaccount.php",{
                                email :     $("#email").val(),
                                password :  $("password").val(), 
                                submit: 1               // New line
                                },
        function(data){
            alert(data);
    })
});

您还可以使用e.preventDefault();来阻止浏览器以正常方式提交表单以及执行AJAX调用

 类似资料:
  • 表单按钮一般分为三类,分别是提交按钮、重置按钮和普通按钮。提交按钮、重置按钮只能在表单中使用,普通按钮则可以在网页的任何地方使用。 从本质上讲,表单按钮也是表单控件,之所以把它分离出来,单独介绍,是因为它的功能比较特别。提交按钮用于把表单数据发送到服务器,重置按钮用于重置整个表单的数据,普通按钮则需要开发者赋予它功能。 当用户点击提交按钮和重置按钮时,就有动作发生,一般不需要添加动作;而普通按钮,

  • 问题内容: 好吧,我试图通过按Enter提交表单,但不显示提交按钮。我不希望尽可能地使用JavaScript,因为我希望所有功能都可以在所有浏览器上正常工作(我知道的唯一JS方式就是使用事件)。 现在,表单如下所示: 哪个效果很好。当用户按下Enter键时,提交按钮将起作用,并且该按钮在Firefox,IE,Safari,Opera和Chrome中不显示。但是,我仍然不喜欢该解决方案,因为很难知道

  • 问题内容: 单击后,我编写了以下代码以禁用网站上的提交按钮: 不幸的是,它没有发送表格。我怎样才能解决这个问题? 编辑 我想绑定提交,而不是表格:) 问题答案: 做到: 发生的事情是您实际上在完全触发该提交事件之前禁用了该按钮。 您可能还应该考虑使用ID或CLASS来命名元素,因此不要在页面上选择所有提交类型的输入。 (请注意,我使用,因此该表单在示例中并未实际提交;请在使用时将其保留。)

  • 我已经使用HTTPClient连接到一个网站,我可以成功地访问所需的数据从网站使用jSoup.我有以下代码,我需要从中提取提交按钮信息。 如何访问提交按钮的值和名称?

  • 问题内容: 我有以下代码,基本上它正在执行两个操作。第一个是将我的表单数据提交到google电子表格,另一个操作是将我的第二个表单文本框值数据提交到另一个页面文本框值。这个怎么做? 从上面可以看到,这是第一页,第二页是第二种形式的Sankranthi_Reserv2.asp。我想在那儿传递文本框值,所以问题是第一种形式是提交给Google文档并存储数据,但是第二种形式需要将手机号码文本框值传递给下

  • 问题内容: 我有一个看起来像这样的表格: 当我绑定到表单的Submit()时,似乎无法访问用户单击的图像。因此,我试图绑定到单击图像本身(),该图像总是提交表单,无论我是否尝试 返回false; event.stopPropogation(); 要么 event.preventDefault(); 因为所有这些都是表单事件。 我应该将$ .post()附加到form.submit()事件上吗,如果