从PHP向Ajax返回一个错误

从PHP向Ajax返回一个错误,php,ajax,error-handling,Php,Ajax,Error Handling,我有一个简单的Javascript函数: function checkParams() { $.ajax( { url: 'login.php', type: "GET", contentType: false, cache: false, processData: false, async: true, data: { user: $("#user").val(), pass: $("#pass"

我有一个简单的Javascript函数:

function checkParams()
{
  $.ajax(
  {
    url: 'login.php',
    type: "GET",
    contentType: false,
    cache: false,
    processData: false,
    async: true,
    data: 
    {
      user: $("#user").val(),
      pass: $("#pass").val()
    },
    success: function(data)
    {
      $("#mydiv").load("loader.php");
    },
    error: function()
    {
      $("#mydiv").load("index.php");
    }
  }); 
}
还有一个简单的PHP函数,它检查正确的用户&传递字符串,如果出现故障,我应该返回一个错误条件

我找到了一些建议执行以下操作的示例:

function foo()
{
  /* code ... */

  /*error condition */
  echo "error";
}
但老实说,它不起作用


如何从PHP告诉ajax我希望ro返回一个“错误条件”?

在这段代码更改中,返回一些东西

success: function(data)
{
  return true;
},
error: function()
{
  return false;
}
基本上 $result=您的ajax返回

if ($result)
    {
        header('Content-Type: application/json');
    }
else
    {
        header('HTTP/1.1 500 Internal Server Yourserver');
        header('Content-Type: application/json; charset=UTF-8');
        die(json_encode(array('message' => 'ERROR', 'code' => 'whatever you want to call it')));
    }
错误处理程序仅在HTTP状态结果指示错误时激发;也就是说,页面返回4xx或5xx状态代码

您可以执行以下两个选项之一:

1) 在回显“错误”之前,使用
标题(“HTTP/1.0 400错误请求”)
(或任何其他相关HTTP状态代码)设置状态代码


2) 不要使用错误状态,而是让成功和失败条件都发出一个数组,通过
JSON_encode()
转换为JSON,然后在javascript中解码,并在成功函数中根据需要处理为成功或失败。

只是询问,对于失败的登录尝试,返回错误500是否合适?对于失败的登录,只需返回FALSE并根据结果执行PHP代码。500是一个服务器端问题。不是失败的登录。这意味着客户端无法访问服务器。我以前从未听说过任何名为“index.php”的内容类型。我问这个问题是因为OP希望在错误事件中处理失败的登录,并且看到了您的答案。我想知道这是否是一种可接受的(肯定不常见的)做法。谢谢你的回答。@Magnus Eriksson。。。打字错误。。。谢谢你提到我的工作。我总是尝试返回一个JSON响应,其属性指示“状态”。