Javascript PHP post不接受按钮标记的值

Javascript PHP post不接受按钮标记的值,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个login.php代码来检查用户是否存在,还有一个AJAX调用,我有一个按钮标签;如果我使用type='submit'PHP可以工作,但AJAX不能工作;如果我使用type='button',AJAX可以工作,但PHP不能 我也尝试过输入,但都是一样的: <?php if (isset($_POST['enviar'])) { include "php/conexion.php"; try {

我有一个
login.php
代码来检查用户是否存在,还有一个AJAX调用,我有一个按钮标签;如果我使用
type='submit'
PHP可以工作,但AJAX不能工作;如果我使用
type='button'
,AJAX可以工作,但PHP不能

我也尝试过输入,但都是一样的:

    <?php 
     if (isset($_POST['enviar'])) {
               include "php/conexion.php";
                try {


                $user = $_POST['user'];
                $pass = $_POST['pass'];


                $sql = 'SELECT count(user_name) FROM user WHERE user_name=:usuario AND password=:password';
                $query = $conexion->prepare($sql);
                $query->bindParam(":usuario", $user);
                $query->bindParam(":password", $pass);
                $query->execute();


                if($res = $query->fetch()) 
                {
                        header("refresh:0.1;url=main.php");
                        }else{
                    echo"User or Password incorrect";
                }

            } catch (Exception $ex) {
                $a= $ex->getMessage();
                var_dump($a);
                die();
            }
        }

        ?>


            <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
           <script type="text/javascript">
            function realizaProceso(user,pass){
            $.ajax({
                    data:  {"user" : user, "pass": pass},
                    url:   'php/functions_sql.php',
                    type:  'post',
                    success:  function(output) {
                      }
            });
    }
           </script>

     <div class="container">
  <div class="login-container">
            </div>
            <div class="form-box">
                <form action="login.php" method="post">
                    <input name="user" id="user" type="text" placeholder="User">
                    <input type="password" name="pass" id="pass" placeholder="Password">
                    <button class="btn btn-info btn-block login" type="button" id="enviar" name="enviar" onclick="realizaProceso($('#user').val(),$('#pass').val());" >Login</button>
                </form>
            </div>
        </div>

</div>
</div>

函数实现过程(用户,通过){
$.ajax({
数据:{“用户”:用户,“通过”:通过},
url:'php/functions_sql.php',
键入:“post”,
成功:功能(输出){
}
});
}
登录

PHP检查
$\u POST['enviar']
,但是AJAX调用没有将其放入
数据:
选项中。使用:

$.ajax({
    data: { user: user, pass: pass, enviar: 1 },
    url:   'php/functions_sql.php',
    type:  'post',
    success:  function(output) {
    }
});

您需要阻止表单提交,以允许执行AJAX调用。对代码进行以下更改:

onclick=“realizaProceso($('#user').val(),$('#pass').val());返回false;”

返回false语句告诉HTML表单“停止”表单提交的执行,以允许您执行自定义操作,例如AJAX表单提交。这就是为什么在使用
type='submit'

您的AJAX调用似乎也在调用“php/functions\u sql.php”。您确定要您的AJAX调用(基于其标题)一个包含SQL相关方法的助手类吗

我担心您正在发布到“functions\u sql.php”,这可能不是为了读取这些变量而设计的

if(isset($\u POST['envier']){…}
中的所有内容都是登录脚本(并读取变量)。您似乎将“异步”(AJAX)和“非异步”用法混合在一起,这就是您感到困惑的原因


将该代码移动到一个单独的文件中(例如login_auth.php),然后更改AJAX调用以与它进行特定对话(
$.AJAX({…,url:'login_auth.php'}

使用
将PHP代码移动到另一个文件,而不是
按钮,然后使用Ajax调用。然后我必须执行两个Ajax调用?检测调用是否使用Ajax,并做出相应响应:它不调用Ajax:(您使用
type=“button”
还是
type=“submit”
?如果使用
type=“submit”
,除非执行
event.preventDefault()操作,否则单击按钮将执行正常提交
。这会重新加载页面,AJAX会丢失。是的,它包含sql方法,但我需要将一些变量传递到此文件,这就是我知道的方式,你建议我另一种方式吗?我已将我的注释响应移动到我的应答器中。这很好^我会将其更改为另一个文件。谢谢