Javascript 使用jQuery AJAX将表单提交到所需的PHP POST请求处理程序不起作用
每当我使用jquery ajax向PHP api提交表单时,表单都不会提交到所需的请求后处理程序。但是当我提交表单时,我的意思是不使用javascript或jquery,表单是提交的,它将重定向到带有json响应的php页面 注意CORS没有问题这里CORS很好,因为我在api中允许跨站点请求 下面是我的login.html文件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')。提交(函数(事件){ /
用户登录页面
登录
电子邮件
密码
还不是会员吗?
$(文档).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额外的}
就在这里,但不是在原始代码中。我一定是把它放错了!