从PHP

时间:2016-01-08 15:47:44

标签: 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").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返回错误条件' ?

2 个答案:

答案 0 :(得分:3)

jQuery.ajax()错误处理程序仅在HTTP状态结果指示错误时触发;也就是说,页面返回4xx或5xx状态代码。

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

1)在回显"错误"之前,用header('HTTP/1.0 400 Bad Request')(或任何其他相关的HTTP状态代码)设置状态代码。

2)不是使用错误状态,而是让您的成功和失败条件都发出一个数组,转换为json_encode()的JSON,然后在您的javascript中解码并在适当时处理成功或失败你的成功功能。

答案 1 :(得分:0)

在这段代码中改为RETURN SOMETHING

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')));
    }