Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery AJAX将表单提交到所需的PHP POST请求处理程序不起作用_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript 使用jQuery AJAX将表单提交到所需的PHP POST请求处理程序不起作用

Javascript 使用jQuery AJAX将表单提交到所需的PHP POST请求处理程序不起作用,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,每当我使用jquery ajax向PHP api提交表单时,表单都不会提交到所需的请求后处理程序。但是当我提交表单时,我的意思是不使用javascript或jquery,表单是提交的,它将重定向到带有json响应的php页面 注意CORS没有问题这里CORS很好,因为我在api中允许跨站点请求 下面是我的login.html文件 用户登录页面 登录 电子邮件 密码 还不是会员吗? $(文档).ready(函数(){ //使用ajax提交登录表单 $('form')。提交(函数(事件){ /

每当我使用jquery ajax向PHP api提交表单时,表单都不会提交到所需的请求后处理程序。但是当我提交表单时,我的意思是不使用javascript或jquery,表单是提交的,它将重定向到带有json响应的php页面

注意CORS没有问题这里CORS很好,因为我在api中允许跨站点请求

下面是我的login.html文件


用户登录页面
登录
电子邮件
密码

还不是会员吗?

$(文档).ready(函数(){ //使用ajax提交登录表单 $('form')。提交(函数(事件){ /*阻止表单正常提交*/ event.preventDefault(); $(“.submit btn”)。单击(函数(){ $.post(”http://localhost/auth-app/server.php", { 电子邮件:$('#email').val(), 密码:$('#password').val() }, 功能(数据、状态){ const json=$.parseJSON(数据); log(“数据:+typeof(json)+”\n状态:+status”); }); }); }); });
注意我想要的是能够使用jquery ajax将表单提交到所需的PHP post请求处理程序函数

下面是我的server.phpapi文件

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

$errors=array();
//登录
如果(isset($_POST['login'])){
$email=$db->real_escape_字符串($_POST['email']);
$password=$db->real_escape_字符串($_POST['password']);
如果(空($email)){
数组_push($errors,'需要电子邮件');
}
if(空($password)){
数组_push($errors,'Password is required');
}
如果(计数($errors)==0){
//登录用户
$data=['success\u login'=>'true'];
标题('Content-type:application/json');
echo json_编码(空);
}否则{
数组_push($errors,'电子邮件或密码不正确');
//输入错误的凭证后
$data=['success\u login'=>'false'];
标题('Content-type:application/json');
echo json_编码($data);
}
}
调试控制台中我得到下面的错误提示。 注意这只是证明post请求没有到达api文件中的php post请求处理程序

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
我希望在控制台中得到的是json数据,如下所示:

success_login   "true"
!重要信息: 我对php不是很有经验,但我注意到,在提交表单时,如果不使用任何javascript(如jquery或ajax),表单会成功提交,因为提交按钮(如
的名称与
$\u POST['login']
中的名称相同。但在技术上使用ajax提交表单时,您不会使用该按钮来提交表单


那么我该如何解决这个问题呢?谢谢你的发帖。试试下面的代码

      $(document).ready(function () {
        $('form').submit(function (event) {
        event.preventDefault();
        $(".submit-btn").click(function () {

         name: $('#email').val(),
         password: $('#password').val()

        $.ajax({
            type: 'post',
            url: 'http://localhost/auth-app/server.php',
            data: {
                name: name,
                password : password,
                action: 'login'
            },
            success: function(response) {

            }
        })
    });
    });
    });

您不需要声明click button事件,因为您已经在使用form submit button事件。另外,当您在login.php文件中检查它的isset值时,在$.post中添加login键作为参数值


另外,请注意,在您的login.php

文件中有额外的大括号“}”,那么请检查是否有其他参数,而不是登录按钮发送。顺便说一句,您尝试验证参数的方式是错误的。您正在尝试访问
$\u POST['email']
,因为在JSON数据的第1行第1列看到SyntaxError:JSON.parse:unexpected end of data。Ajax和PHP工作,响应返回到客户端。也许,“echo json_encode(null);”计数($errors)==0。它应该是echo json_encode($data);login.php中还有一个额外的
}
。只需删除最后一个
}
:-)@Jagveer额外的
}
就在这里,但不是在原始代码中。我一定是把它放错了!