JavaScript/jQuery和PHP Ajax强制出错

Dav*_*vid 3 javascript php ajax jquery

是否可以强制错误状态从php脚本返回到ajax请求.

我正在处理ajax请求中的成功和错误状态,我想要一种强制错误的方法.该错误似乎只是由xhttp错误触发,我想在服务器上不满足条件时触发此错误.它似乎令人困惑,必须返回成功,并且必须在错误的响应中放置一个标志

Jos*_*rns 6

您可以从两个角度来解决这个问题:

  • 通过输出HTTP标头(例如404或503)强制抛出错误.
  • 根据结果​​数据的某些条件强制抛出错误.

通过输出HTTP标头(如404或503)强制抛出错误:

PHP

<?php
if(User::Login($_POST['username'], $_POST['password'])) { // Your logic here
  print 'Login successful!';
} else {
  header("HTTP/1.0 403 Forbidden");
  print 'Bad user name / password';
}
Run Code Online (Sandbox Code Playgroud)

jQuery的

$.ajax({
  'url': '/some/url',
  'type': 'POST',
  'data': {
    'username': 'someone@example.com',
    'password': 'rhd34h3h'
  },
  'success': function(data) {
    alert(data);
  },
  'error': function(jqXHR, textStatus, errorThrown) {
    alert('ERROR: ' + textStatus);
  }
});
Run Code Online (Sandbox Code Playgroud)

根据结果​​数据的某些条件强制抛出错误:

PHP

<?php
$return = array();
if(User::Login($_POST['username'], $_POST['password'])) { // Your logic here
  $return['success'] = True;
  $return['message'] = 'Login successful!';
} else {
  $return['success'] = False;
  $return['message'] = 'Bad user name / password';
}
print json_encode($return);
Run Code Online (Sandbox Code Playgroud)

jQuery的

$.ajax({
  'url': '/some/url',
  'type': 'POST',
  'dataType': 'json',
  'data': {
    'username': 'someone@example.com',
    'password': 'rhd34h3h'
  },
  'success': function(data) {
    if(data['success']) { // Successful login
      alert(data['message']);
    } else { // Login failed, call error()
      this.error(this.xhr, data['message']);
    }
  },
  'error': function(jqXHR, textStatus, errorThrown) {
    alert('ERROR: ' + textStatus);
  }
});
Run Code Online (Sandbox Code Playgroud)