Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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 如何正确使用jqueryajax登录_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 如何正确使用jqueryajax登录

Javascript 如何正确使用jqueryajax登录,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在尝试使用JQuery的验证插件来执行AJAX登录,页面不必刷新,经过数小时的尝试和错误,以及搜索web的徒劳努力,我决定询问一些SO专家。以下是我目前的JS逻辑: $(formEl).validate({ rules: { email: { required: true, email: true }, password: { required: true } }, messages: { email:

我正在尝试使用JQuery的验证插件来执行AJAX登录,页面不必刷新,经过数小时的尝试和错误,以及搜索web的徒劳努力,我决定询问一些SO专家。以下是我目前的JS逻辑:

$(formEl).validate({
  rules: {
    email: {
      required: true,
      email: true
    },
    password: {
      required: true
    }
  },
  messages: {
    email: {
      required: 'Please enter your email address.'
    },
    password: {
      required: 'Please enter your password.'
    }
  },
  submitHandler: function(form) {
    $.ajax({
        url: form.action,
        type: form.method,
        data: $(form).serialize(),
        success: function(form) {
            // submit form
        },
        error: function() {
          // add custom jQuery validation error message stating a failure
        }

    });
  }
});

formEl.addEventListener('submit', function(ev) {
  ev.preventDefault();

});
和服务器端逻辑(PHP):


我想要完成的是,如果表单有效,将其发布到我的php脚本并愉快地登录,但是如果不是,我希望页面不要重新加载,并在我的输入下抛出自定义jQuery验证错误消息。那么,我是否应该在我的
else
子句中回显将返回到
submitHandler
的消息请提供建议

要回答您的问题,是的,您应该从
else
发送
json
响应,然后在
success
回调中处理该响应,并在表单上显示相应的错误

编辑

php代码将更改如下:

if($validation->passes()) {
// log user in 
   $data = /** whatever you're serializing **/; // include "status" for successful login
}else {
 $data = /** whatever you're serializing **/; // include "status" for error
}
header('Content-Type: application/json');
return json_encode($data);
在ajax中,您可以这样更改
success

 success: function(data) {
        var status = data.status;
      // do things depending on status
    },

你能举一个例子说明这个逻辑在答案中应该是怎样的吗?使用我问题中的代码。编辑我的答案,请检查。
 success: function(data) {
        var status = data.status;
      // do things depending on status
    },